Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
GPS와 키오스크 시계, 드래그‑앤‑드롭 일정, SSS·PhilHealth·Pag‑IBIG·BIR 세금 포함 급여 관리
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.
비즈니스TypeScript · JavaScriptGitHub @amoraberme온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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.