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,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Multi-tenant school event calendar — staff submit events via wizard → admin approves → 4 public views (Gantt, calendar, agenda, iCal)
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Multi-tenant school event calendar. Staff editors submit events through a 7-step wizard → admin approves → events appear on four public views (Gantt, agenda, printable calendar, iCal). Each school is isolated via Postgres RLS. Hebrew RTL by default, English toggle available.
Then sign in at /login with [email protected] / ChangeMe123! (created by the seed).檢視完整 README ↗Multi-tenant school event calendar. Staff editors submit events through a 7-step wizard → admin approves → events appear on four public views (Gantt, agenda, printable calendar, iCal). Each school is isolated via Postgres RLS. Hebrew RTL by default, English toggle available.
cp .env.example .env.local # fill in Supabase + DB urls
pnpm install
pnpm db:migrate # apply schema
pnpm seed # demo school + admin + 6 grade editors
pnpm dev # http://localhost:3000
Then sign in at /login with [email protected] / ChangeMe123! (created by the seed).
pnpm dev # local server
pnpm tsc # TypeScript strict (no emit)
pnpm lint # ESLint
pnpm test # Vitest unit + integration
pnpm test:unit # unit tests only (no DB needed)
pnpm test:integration # integration tests (TEST_DATABASE_URL required)
pnpm playwright # Playwright e2e (chromium)
pnpm build # production build
pnpm seed:perf # populate 1 000 events for perf benchmarks
Next.js 15 (App Router) · React 19 · TypeScript 5 strict · Tailwind CSS · shadcn/ui · Supabase (Postgres + Auth + RLS) · Drizzle ORM · next-intl · Hand-written RFC 5545 iCal serializer · Resend · Zod · Vitest · Playwright · @axe-core/playwright.
app/
(public)/ — Unauthenticated visitor surface
page.tsx — school index landing
[school]/page.tsx — Gantt (Phase 5)
[school]/agenda/ — mobile agenda (Phase 4)
[school]/calendar/ — printable yearly calendar (Phase 6)
(staff)/ — Authenticated editor surface
dashboard/ — draft + pending list, link to rejected
dashboard/rejected/ — rejected events with reason (Phase 3)
events/new/ — 7-step wizard
profile/ — iCal subscriptions (Phase 7)
(admin)/admin/ — Admin-only
queue/ — pending events, approve / reject (Phase 3)
staff/ — manage editors
event-types/ — color + glyph palette
year/ — academic year
api/v1/ — REST route handlers
events/[id]/{approve,reject,revise,submit}/
ical-subscriptions/{[id]/}
…
ical/[token]/route.ts — public token-gated iCal feed (Phase 7)
lib/
db/ — Drizzle schema, withSchool RLS wrapper, schools/staff helpers
auth/ — session, admin guard, editor scopes
events/ — approval state machine, CRUD, queries, revisions
ical/ — VEVENT serializer + subscription module
views/ — agenda, gantt, calendar pure projections
validations/ — Zod schemas
i18n/ — locale config + setLocale server action
i18n/request.ts — next-intl request handler (cookie-based)
db/
migrations/ — one .sql file per schema change
seed.ts — demo school bootstrap (1 admin + 6 grade editors + 11 event types)
seed-perf.ts — 1 000-event perf seed
messages/{he,en}.json — UI strings (he primary)
test/
unit/ — pure-function tests (vitest)
integration/ — RLS + DB tests (vitest, real Postgres)
e2e/ — Playwright incl. a11y + PRD §14 acceptance
See CLAUDE.md for canonical conventions.
| Phase | Scope | Status |
|---|---|---|
| 0 | Foundation — scaffold, RTL toolchain, CI | ✅ |
| 1 | Database, RLS, Auth — schema, withSchool, lockout | ✅ |
| 2 | Event CRUD + 7-step wizard with draft autosave | ✅ |
| 3 | Approval workflow + admin queue + revisions | ✅ |
| 4 | Public surface: FilterBar + mobile agenda | ✅ |
| 5 | Gantt view (Sept–Jul timeline, zoom presets) | ✅ |
| 6 | Printable yearly calendar + monochrome fallback | ✅ |
| 7 | iCal feed + per-staff subscriptions | ✅ |
| 8 | Polish — a11y, i18n, perf, e2e, docs | ✅ |
NEXT_LOCALE cookie · all UI strings flow through next-intl@media print produces an 11-page A4 PDF · monochrome fallback (glyph + dashed border) keeps chips legibledb.withSchool(schoolId, fn) · ESLint bans supabaseAdmin outside lib/db/events.status directlystart/end) — never hardcode left/rightanySee OPERATIONS.md for Supabase setup, migrations, seeding, deployment, and runbooks.
GitHub Actions runs on every PR and push to main:
pnpm install --frozen-lockfilepnpm lintpnpm tscpnpm test (unit + integration)pnpm buildpnpm playwright (chromium, with axe a11y gates)main is protected — no direct pushes, CI must be green, one approving review required.