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。 以下為已儲存的摘錄。
First Class Washing Bay — Management System
A web + installable-mobile (PWA) management system for a car/truck/motorbike
washing bay: record every wash, split the payment transparently three ways
(business / washing boy / soap), pay washing boys with an SMS or printed
receipt as proof, track expenses, and see daily/monthly reports.
Built to match the "Elite Operation" design system you supplied (see
design/DESIGN.md if you keep it in the repo) — same colors, type scale,
spacing, and component styles as the Dashboard and Staff Performance mocks.檢視完整 README ↗A web + installable-mobile (PWA) management system for a car/truck/motorbike washing bay: record every wash, split the payment transparently three ways (business / washing boy / soap), pay washing boys with an SMS or printed receipt as proof, track expenses, and see daily/monthly reports.
Built to match the "Elite Operation" design system you supplied (see
design/DESIGN.md if you keep it in the repo) — same colors, type scale,
spacing, and component styles as the Dashboard and Staff Performance mocks.
src/lib/sms/) — ships with a safe
console logger for development and a Kairos Africa adapter stub for
production (swap in real credentials when you have them).npm install
docker compose up -d
cp .env.example .env
Edit .env:
DATABASE_URL — already matches docker-compose.yml if you used step 3.NEXTAUTH_SECRET — generate one: openssl rand -base64 32SMS_PROVIDER — leave as console until you have Kairos Africa credentials
(SMS messages will just be printed to your terminal instead of sent).npm run db:migrate
npm run db:seed
The seed script creates:
[email protected] / ChangeMe123! unless you set
SEED_OWNER_EMAIL/SEED_OWNER_PASSWORD first). Change this password
after your first login.npm run dev
Visit http://localhost:3000, sign in with the owner account, and you're in.
Create additional logins directly in the database for now (via
npm run db:studio, which opens Prisma's data browser) — there's no
self-service "invite a manager" screen yet; see Not yet built below.
On the Staff Performance page, each boy with an outstanding balance shows a Pay button. Clicking it lets you choose how to notify them:
SMS_PROVIDER is configured./receipt/payout/[id]) in a
new tab; hit Ctrl/Cmd+P. This is meant for handing a paper slip to boys who
aren't comfortable relying on a phone notification alone — it lists every
vehicle the payout covers, so it doubles as an audit trail.Every wash receipt is also printable from the Revenue Recording table
(/receipt/wash/[id]) for handing to customers.
src/lib/sms/kairos-provider.ts mirrors the contract used by Kairos
Africa's own official SDK (@kairosafrika/sms, github.com/Kairos-Afrika/sms-node)
since their public site doesn't document the REST API directly:
https://api.kairosafrika.com/v1 (not configurable —
there's only one).x-api-key / x-api-secret headers (not Basic Auth).POST /external/sms/quick with { to, from, message }.GET /external/account/balance, credit amount in data.credit.Their dashboard's "API Access Credential" panel gives you an Access Key
and Access Secret — enter both in Settings > SMS Notifications (or as
KAIROS_ACCESS_KEY / KAIROS_ACCESS_SECRET in .env as a fallback), along
with a Sender ID that must already be approved on your Kairos account.
Settings also has "Send Test" and "Check Balance" buttons to verify
credentials work before relying on them for real payouts. If Kairos changes
their contract, src/lib/sms/kairos-provider.ts is the only file that needs
updating — everything else in the app talks to the SmsProvider interface.
Once deployed to a real HTTPS domain, open the site on a phone and use the
browser's "Add to Home Screen" option — it installs like a native app
(src/app/manifest.ts + public/sw.js). Note: the app icon currently ships
as a simple generated SVG (public/icons/icon.svg); for the best look on
iOS specifically, generate proper 192×192/512×512 PNG icons (any favicon
generator works) and swap them into the manifest before a public launch.
prisma/schema.prisma Data model (see comments for the split-money design)
src/lib/reports.ts Shared business-summary + staff-performance queries
src/lib/sms/ Pluggable SMS provider (console + Kairos Africa)
src/lib/validation.ts All input validation (zod)
src/app/(app)/ Authenticated app pages (dashboard, revenue, staff, settings)
src/app/api/ REST API routes backing the above
src/app/receipt/ Printable wash + payout receipts
public/sw.js)src/lib/api-guard.ts); business-settings and service-type changes
additionally require the Owner role.payoutId set) and its
status can no longer be changed, preventing after-the-fact tampering with
paid records.