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,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Time clock, scheduling and Philippine payroll for small businesses: a multi-tenant SaaS installable as a phone app (PWA).
Next.js 16 (App Router) · React 19 · TypeScript · Prisma 7 + PostgreSQL 16 · Better Auth · Tailwind CSS 4 · Vitest · Playwright
cp .env.example .env # then edit DATABASE_URL and the secrets
pnpm install
pnpm db:migrate # create tables
pnpm db:seed # statutory tables, PH holidays, demo company
pnpm dev # http://localhost:3000
Demo logins (password demo12345): [email protected] (owner), [email protected] (manager), [email protected] (employee). Demo company code: DEMO2026. Kiosk PINs are 1001–1007 in team order (Maria = 1001, Ana = 1003).
pnpm demo:enterprise # "Demo Logistics Corp": 4 regions, terminals, 24h guards, drivers, a full cutoff
pnpm report:sample # writes docs/samples/clocktime-cutoff-report-sample.xlsx (+ CSVs)
Sign in as [email protected], timekeeper@…, supervisor.cebu@… or owner@… (password demo12345).
ZKTeco-style terminals with ADMS (cloud push) send punches to /iclock/cdata. Add each terminal under Settings → Terminals by serial number, then on the terminal set Cloud Server to your domain, port 443, HTTPS. Staff names and RFID cards sync to the terminals; fingerprint templates stay on the device. Terminals that can't connect can upload a USB attlog.dat or CSV export on the same page, and other systems can post logs to POST /api/v1/attendance-logs. Test without hardware: pnpm adms:sim --sn <serial>.
Some older firmware only speaks plain HTTP, and Vercel serves HTTPS only; test one real unit before rollout, and use a small HTTP→HTTPS relay if needed.
| Command | What it does |
|---|---|
pnpm dev | Dev server |
pnpm build && pnpm start | Production build and server |
pnpm lint / pnpm typecheck | ESLint / TypeScript |
pnpm test | Unit + integration tests (Vitest, needs Postgres) |
pnpm test:e2e | End-to-end tests (Playwright, builds must exist) |
pnpm db:migrate / db:seed / db:reset | Database |
src/app/ routes: (auth), onboarding, app/ (managers), me/ (employees), kiosk/, admin/, api/
src/server/ server-only code: db, auth, tenant scoping, context, audit, services/
src/lib/ shared logic: time zones, pay engine (lib/pay), geo, validation, entitlements
src/config/plans.ts plan prices, limits and feature flags
prisma/ schema, migrations, seed
tests/ unit, integration, e2e
Every tenant row has companyId. Server code reads and writes through ctx.db (src/server/tenant.ts), a Prisma client extension that adds the company filter to every query and sets companyId on every create.
SSS, PhilHealth, Pag-IBIG, BIR withholding and DOLE premium tables live in src/lib/pay/statutory.ts and premiums.ts. They're seeded into the StatutoryTable table with effective dates. Have a Philippine payroll accountant verify them before running live payroll.
DATABASE_URL. Run pnpm db:deploy, then NODE_ENV=production pnpm db:seed, which loads the statutory tables and holidays only..env.example:
APP_URL: your domain, e.g. https://app.clocktime.phBETTER_AUTH_SECRET, DATA_ENCRYPTION_KEY: generate each with openssl rand -base64 32. Never change the encryption key after launch; encrypted IDs depend on it.CRON_SECRET: Vercel Cron sends it automatically. vercel.json schedules the jobs. Jobs that run every 15 minutes (exceptions, auto clock-out, reminders) need Vercel Pro; on Hobby, change them to daily.SUPER_ADMIN_EMAILS: your own email, which unlocks /admin.EMAIL_PROVIDER=resend, RESEND_API_KEY and EMAIL_FROM (a verified domain).STORAGE_PROVIDER=s3 plus the S3_* variables (Cloudflare R2 works).pnpm dlx web-push generate-vapid-keys, then set NEXT_PUBLIC_VAPID_PUBLIC_KEY and VAPID_PRIVATE_KEY.PAYMONGO_SECRET_KEY and PAYMONGO_PUBLIC_KEY.checkout_session.payment.paid pointing to https://<domain>/api/webhooks/paymongo, and set PAYMONGO_WEBHOOK_SECRET.BILLING_TEST_MODE on a live site./admin/statutory and the holiday list at /admin/holidays.Plans are prepaid monthly or yearly through PayMongo Checkout, which takes GCash, Maya, GrabPay or card. Renewal reminders go out 7 days and 1 day before expiry. A lapsed company becomes past due with a 7-day grace period, then drops to Free features; no data is deleted. Super-admins can record bank-transfer payments manually in /admin.
Not yet built: card auto-renewal through the PayMongo Subscriptions API. PayMongo has to enable that API on your account first, and payments in this build are verified only with signed webhook fixtures in tests.