Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
인도 기업(50~1,000명, 1~5개 법인)을 위한 클라우드 HRMS·법정 급여 플랫폼으로, 컨설턴트 없이 14일 이내에 구축됩니다
A cloud HRMS and statutory payroll platform for Indian companies of 50–1,000 employees across one to five legal entities. Live in under fourteen days, without a consultant.
비즈니스TypeScript · JavaScriptGitHub @jsservices1992-sudo온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Indian payroll and HRMS — employee master, attendance and leave, payroll runs
with statutory deductions, income tax, loans and advances, full-and-final
settlement, banking files, and an employee self-service portal.
• Node 20+
• A PostgreSQL database. Render is what these
instructions assume; any managed Postgres works.
db:bootstrap creates the first company and administrator and prints a
generated password once. There is no demo data and no default account.README 전문 보기 ↗Indian payroll and HRMS — employee master, attendance and leave, payroll runs with statutory deductions, income tax, loans and advances, full-and-final settlement, banking files, and an employee self-service portal.
npm install
# a local Postgres, e.g. docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=dev postgres:16
export DATABASE_URL="postgresql://postgres:dev@localhost:5432/postgres"
npm run db:push && npm run db:triggers
[email protected] ADMIN_NAME="Your Name" \
COMPANY_NAME="Your Company Private Limited" npm run db:bootstrap
npm run dev
db:bootstrap creates the first company and administrator and prints a
generated password once. There is no demo data and no default account.
Alternatively, visit /signup and register a company through the browser.
Registration is open unless SIGNUP_ENABLED=false is set — switch it off on a
single-company install, where a public page that mints administrators is not
something you want.
Copy .env.example and fill it in. In production DATABASE_URL is required —
the app refuses to open a file-backed database there, because a serverless
filesystem does not survive a redeploy.
| Variable | Purpose |
|---|---|
DATABASE_URL | PostgreSQL connection string. Required everywhere. |
STORAGE_PROVIDER | Set to vercel-blob for this installation. |
BLOB_READ_WRITE_TOKEN | Private Vercel Blob store token, server-side only. |
UPLOAD_ROOT | Development only, when the Blob store is unset. |
SIGNUP_ENABLED | Set to false to close self-serve registration. |
DATABASE_URL. The internal
URL only resolves inside Render's own network.STORAGE_PROVIDER=vercel-blob.
Keep BLOB_READ_WRITE_TOKEN in deployment secrets, never Git or a NEXT_PUBLIC_ variable.
Existing documents in another store must be migrated separately; selecting a
provider does not copy them.npm run db:migrate and npm run db:check
against that deployment's DATABASE_URL. The migration runner also installs
the append-only audit triggers. Do not use db:push for production upgrades./api/health; an administrator should also test upload, authenticated
download and unauthorized access with a disposable document. A configured
token is not proof that the store is reachable or its permissions are correct.DATABASE_URL=… ADMIN_EMAIL=… ADMIN_NAME=… COMPANY_NAME=… npm run db:bootstrapGET /api/health reports which piece is missing — whether the database and
Blob store are configured, whether the database answers, and whether the
schema has been pushed at it. It reports presence, never values.
A 500 on sign-in or registration with pages that otherwise render is almost
always an unset DATABASE_URL: the pages do not touch the database until
something is submitted.
These are deliberate, documented gaps rather than oversights. Read them before putting anyone's payroll in here.
lib/tax/config.ts; those flags are not certification of the whole
payroll workflow. ECR and ESIC return formats remain unverified. State
references, employer facts and filing outputs need independent review.
See PAYROLL-AUDIT-REMEDIATION.md for implemented fixes and remaining gaps.
COMPLIANCE-WORKFLOWS.md documents the statutory operations screens and
migrations 0027-0034, which must be rehearsed and applied before this release.lib/tax/config.ts. This is
deliberate — silently reusing last year's slabs is worse than refusing.npm run dev # development server
npm run build # production build
npm run db:check # read-only check for missing release tables/columns
npm run db:push # apply the schema
npm run db:bootstrap # create the first company and administrator
npx tsc --noEmit -p . # typecheck
npx tsx --test "lib/**/*.test.ts" # unit tests
npx eslint . # lint
bigint. No floating point
anywhere in a calculation that reaches a payslip — and not 32-bit
integer either, which caps at about ₹2.14 crore and would wrap
silently on a large annual total.lib/ holds the rules, Server Actions
are thin wrappers over them.no-floating-promises lint rule is load-bearing: an un-awaited
write inside a transaction is one the commit does not wait for.