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.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Masjid and community
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Masjid Membership & Donation Management System — multi-tenant, mobile-first, built for non-technical users. [DEV branch test]
• Node.js 18+
• A Supabase project (free tier is fine)
• (Optional) Google Gemini API key, Resend API key
In your Supabase dashboard, run supabase/run_all_migrations.sql first, then run every file in supabase/migrations/ in numeric order. The later migration files add bulk import, family, application, finance, and other incremental features.
This creates all tables, RLS policies, Postgres functions, and the auth trigger.查看完整 README ↗Masjid Membership & Donation Management System — multi-tenant, mobile-first, built for non-technical users. [DEV branch test]
| Layer | Technology |
|---|---|
| Frontend / Backend | Next.js 14 (App Router, TypeScript, Tailwind CSS, shadcn/ui) |
| Database / Auth / Storage | Supabase (Postgres + RLS + Auth + Storage) |
| AI | Google Gemini API (gemini-3.5-flash) |
Resend (optional; falls back to outbox table) | |
pdf-lib (server-side) | |
| Maps | Leaflet + OpenStreetMap |
| Deployment | Vercel Hobby + Supabase free tier |
git clone <repo-url>
cd baitul-jamaat
npm install
Create .env.local at the project root:
# Supabase — from your project Settings → API
NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
# Super admin credentials (used by seed-super-admin script)
SUPER_ADMIN_PHONE=9876543210
SUPER_ADMIN_PASSWORD=ChangeMe123!
# Cron security (any random secret you choose)
CRON_SECRET=your-random-cron-secret
# Optional — AI features (OCR, duplicate detection, family suggestions)
GEMINI_API_KEY=your-gemini-api-key
# Optional — email delivery (falls back to outbox table if not set)
RESEND_API_KEY=your-resend-api-key
[email protected]
# Optional — used for registration QR code link generation
NEXT_PUBLIC_APP_URL=https://your-vercel-app.vercel.app
In your Supabase dashboard, run supabase/run_all_migrations.sql first, then run every file in supabase/migrations/ in numeric order. The later migration files add bulk import, family, application, finance, and other incremental features.
This creates all tables, RLS policies, Postgres functions, and the auth trigger.
node scripts/seed-super-admin.mjs
Uses SUPER_ADMIN_PHONE and SUPER_ADMIN_PASSWORD from .env.local.
node scripts/seed.mjs
Creates 1 masjid (BJM), 1 admin, 15 members, 1 monthly program, and sample ledger entries. All demo passwords are Demo@1234.
npm run dev
Visit http://localhost:3000.
In your Supabase dashboard → Storage → New bucket:
id-documentsimage/jpeg, image/png, application/pdfThen go to Storage → Policies and add these policies for id-documents:
-- Allow masjid admins to read documents in their masjid's folder
CREATE POLICY "masjid_admin: read own masjid docs"
ON storage.objects FOR SELECT
USING (
auth.jwt()->'app_metadata'->>'role' = 'masjid_admin'
AND (storage.foldername(name))[1] = auth.jwt()->'app_metadata'->>'masjid_id'
);
-- Allow public uploads during registration (files are stored in masjid sub-folder)
CREATE POLICY "public: upload to masjid folder"
ON storage.objects FOR INSERT
WITH CHECK (bucket_id = 'id-documents');
In Authentication → Settings:
Connect your GitHub repo to Vercel. Framework preset: Next.js.
Add all variables from .env.local to Vercel project settings → Environment Variables. Set them for Production, Preview, and Development as appropriate.
The vercel.json file is already configured:
{
"crons": [{ "path": "/api/cron/daily", "schedule": "30 0 * * *" }]
}
This fires daily at 00:30 UTC and handles both recurrence billing and month-start statements. The route is protected by CRON_SECRET (Vercel sends it as Authorization: Bearer <secret>).
Push to main — Vercel auto-deploys.
| Variable | Required | Description |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | Yes | Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Yes | Supabase anon (public) key |
SUPABASE_SERVICE_ROLE_KEY | Yes | Supabase service role key (server-only) |
SUPER_ADMIN_PHONE | Seed only | Phone number for super admin account |
SUPER_ADMIN_PASSWORD | Seed only | Initial password for super admin |
CRON_SECRET | Yes | Shared secret for cron route authentication |
GEMINI_API_KEY | Optional | Google Gemini API key; OCR/AI features disabled without it |
RESEND_API_KEY | Optional | Resend email API key; emails log to outbox table if absent |
RESEND_FROM | Optional | Sender address for emails (e.g. [email protected]) |
NEXT_PUBLIC_APP_URL | Optional | Full app URL for QR code links (auto-detected from request headers if absent) |
| Role | Access |
|---|---|
super_admin | Full access to all masjids; CRUD for masjid records and admin accounts |
masjid_admin | Full access to their own masjid's data — members, programs, ledger, receipts |
member | Read-only access to own balance, ledger history, and GPay payment QR |
Login uses phone number + password. Phone is stored as {phone}@bj.local internally to satisfy Supabase Auth's email requirement.
| Service | Usage | Cost |
|---|---|---|
| Vercel Hobby | 1 project, serverless functions | Free |
| Supabase Free | DB, Auth, Storage (500 MB) | Free |
| Gemini API | ~50–200 OCR calls/month | ~$0.01–$0.05 |
| Resend Free | 100 emails/day | Free |
| Total | ~₹0–₹5/month |
src/
├── app/
│ ├── (admin)/ # Masjid admin UI routes
│ ├── (auth)/ # Login / change-password
│ ├── (member)/ # Member portal
│ ├── (superadmin)/ # Super admin UI
│ ├── api/ # API routes (admin/, superadmin/, cron/, masjids/)
│ └── masjids/ # Public self-registration pages
├── components/ # Shared React components
├── lib/ # Supabase clients, Gemini, email, PDF, billing utils
├── types/ # TypeScript types (database.ts)
└── proxy.ts # Next.js middleware
supabase/
├── migrations/ # SQL migration files (run_all_migrations.sql aggregates them)
scripts/
├── seed-super-admin.mjs # Create super admin account
└── seed.mjs # Load demo data