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
Modern booking, reminders, and client management. Flat-rate plans starting at $14/month.
Translation pending
BusinessTypeScript · CSSGitHub @justinWavesOnlineOwner 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
Lightweight CRM for Piano Technicians, and customer booking flow
Taken from the repository README
Loading the full README.
Read the full 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