Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
Translation pending
Members, tithes, harvests, day-born offerings, SMS broadcasts, and reports. Built for Ghanaian Methodist, Presbyterian, Pentecostal, and Charismatic churches.
BusinessJavaScript · CSSGitHub @Nanicle-CinematicsOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A shared multi-tenant church management SaaS built with Node.js, Express,
PostgreSQL, and Prisma. One deployment serves many churches; every tenant-owned
record carries churchId, and database access is scoped centrally through
tenantDb(churchId).
SESSION_SECRETnpm install
cp .env.example .env
npx prisma generate
npx prisma db push
npm start
Set DATABASE_URL and SESSION_SECRET before starting the app. Open
http://localhost:3000; the public landing page lets a church create its own
tenant and first administrator.
lib/tenant.js exports:
db: raw Prisma client for genuine global concerns such as login and signuptenantDb(churchId): the application client used for tenant-owned dataThe tenant client injects churchId into supported reads and writes. Raw SQL is
checked separately:
npm run check:raw-sql-tenant-scoping
Every new route must include cross-tenant tests. Application scoping is the primary isolation boundary; do not query tenant models through the raw client without a documented reason.
npm test
npm run check:raw-sql-tenant-scoping
The integration suite uses the configured PostgreSQL database and starts temporary localhost HTTP servers. Use a dedicated non-production database.
Required:
| Variable | Purpose |
|---|---|
DATABASE_URL | PostgreSQL connection string |
SESSION_SECRET | Signs sessions; must remain stable across deployments |
NODE_ENV=production | Enables production cookie/security behavior |
PUBLIC_URL | Public origin used for check-in, RSVP, and email links |
Common optional configuration:
| Variable | Purpose |
|---|---|
PHOTO_DIR | Persistent member-photo directory |
ARKESEL_API_KEY / ARKESEL_SENDER | SMS delivery; empty key keeps dry-run mode |
SMTP_HOST / SMTP_USER / SMTP_PASS / SMTP_FROM | SMTP email delivery |
RESEND_API_KEY | Resend email delivery |
SUPPORT_EMAIL / ALERT_EMAIL / ALERT_WEBHOOK_URL | Support and monitoring |
The production app runs on Fly.io using fly.toml and Dockerfile.
flyctl secrets set DATABASE_URL='postgresql://...'
flyctl secrets set SESSION_SECRET="$(openssl rand -hex 32)"
flyctl deploy -a church-management-system
After deployment, verify:
curl -fsS https://church-management-system.fly.dev/healthz
curl -fsS https://church-management-system.fly.dev/readyz
./scripts/prod-sanity.sh https://church-management-system.fly.dev
See docs/RELEASE_CHECKLIST.md for the complete release and rollback process.
| Path | Purpose |
|---|---|
server.js | Postgres multi-tenant application bootstrap |
prisma/schema.prisma | PostgreSQL schema |
lib/tenant.js | Central Prisma tenant-scoping layer |
lib/tenant-http.js | Express application assembly |
routes-pg/ | JSON/action routes |
routes-pg-html/ | Server-rendered product routes |
test/ | RBAC, tenant-isolation, finance, and feature integration tests |
The older SQLite modules remain temporarily as rollback/reference material and must not be used for new production features.