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.