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,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Lightweight CRM for Piano Technicians, and customer booking flow
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A modern booking and management system for piano technicians and their customers.
Sonata CRM is a multi-tenant Next.js application. Technicians sign up, manage customers, pianos, appointments, availability and service types, and customers book online. The Express API and Railway deployment were retired in the 2026 overhaul — Next.js route handlers + Prisma are the whole backend.
apps/web/components/ui), Lucide icons,
Sonner toasts, scoped liquid-glass chrome (auth / marketing / modals)supabase/cutover.md)DESIGN.md is the canonical design system: tokens, the
glass-vs-solid surface rules, the component catalog, and conventions for
auth/forms/tables. Read it before building UI — implementations live in
apps/web/components/ui, apps/web/components/auth, and
packages/tailwind-config/shared-styles.css.
sonata-crm/
├── apps/
│ └── web/ # Next.js app: pages, app/api route handlers, prisma/
├── packages/ # Shared tailwind / typescript / eslint configs
├── supabase/ # RLS policies + production cutover checklist
└── backups/ # Local pg_dump backups (gitignored)
make install
cp apps/web/.env.example apps/web/.env # then fill in DATABASE_URL + AUTH_SECRET
make migrate # apply migrations
make seed # seed sample technicians/customers (bcrypt-hashed passwords)
Seed password defaults to Sonata-Dev-2026! (override with
SEED_TECH_PASSWORD). Seeded accounts: [email protected],
[email protected], [email protected].
make dev # http://localhost:3001
Log in at http://localhost:3001/tech/login with a seeded account, or create a
new tenant at /tech/sign-up.
make install / generate / seed / dev / migrate / reset
cd apps/web
yarn lint # ESLint (warnings ratcheted, see eslint config)
yarn check-types # tsc --noEmit
yarn test # Vitest: session tokens + tenant-isolation (needs DATABASE_URL)
yarn test:e2e # Playwright: login, sign-up, dashboard guard, booking page
yarn build # production build (type + lint gates enforced)
apps/web/middleware.ts (Supabase session refresh, or
local session cookie presence) + server-side checks in every route handler.apps/web/lib/tenant-isolation.test.ts and the API itself).supabase/cutover.md.
Setting NEXT_PUBLIC_SUPABASE_URL + NEXT_PUBLIC_SUPABASE_ANON_KEY
switches the app to Supabase Auth automatically.npx prisma migrate deploy against it.DATABASE_URL (pooled), AUTH_SECRET,
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY,
SUPABASE_SERVICE_ROLE_KEY, and optionally Cloudinary keys for piano photos.MIT