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
GPS and kiosk time clock, drag-and-drop schedules, and payroll with SSS, PhilHealth, Pag-IBIG and BIR tax built in. For teams of 2 to 50.
BusinessTypeScript · JavaScriptGitHub @amorabermeOnlineOwner 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 ↗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.