Implements CalDAV sync using github.com/emersion/go-webdav: - CalDAVService with background polling (configurable per-tenant interval) - Push: deadlines -> VTODO, appointments -> VEVENT on create/update/delete - Pull: periodic fetch from CalDAV, reconcile with local DB - Conflict resolution: KanzlAI wins dates/status, CalDAV wins notes/description - Conflicts logged as case_events with caldav_conflict type - UID pattern: kanzlai-{deadline|appointment}-{uuid}@kanzlai.msbls.de - CalDAV config per tenant in tenants.settings JSONB Endpoints: - POST /api/caldav/sync — trigger full sync for current tenant - GET /api/caldav/status — last sync time, item counts, errors 8 unit tests for UID generation, parsing, path construction, config parsing.
KanzlAI-mGMT
Kanzleimanagement online — law firm management for deadlines, appointments, and case tracking.
Structure
backend/ Go API server
frontend/ Next.js 15 (TypeScript, Tailwind CSS)
Development
make dev-backend # Go server on :8080
make dev-frontend # Next.js dev server
make build # Build both
make lint # Lint both
make test # Test both
Tech Stack
- Frontend: Next.js 15, TypeScript, Tailwind CSS
- Backend: Go
- Database: Supabase (PostgreSQL) —
kanzlaischema - Deploy: Dokploy on mLake (kanzlai.msbls.de)
Description
Languages
TypeScript
51.8%
Go
47.8%
Dockerfile
0.1%
CSS
0.1%