m 0b6bab8512 feat: add tenant + auth backend endpoints (Phase 1A)
Tenant management:
- POST /api/tenants — create tenant (creator becomes owner)
- GET /api/tenants — list tenants for authenticated user
- GET /api/tenants/:id — tenant details with access check
- POST /api/tenants/:id/invite — invite user by email (owner/admin)
- DELETE /api/tenants/:id/members/:uid — remove member
- GET /api/tenants/:id/members — list members

New packages:
- internal/services/tenant_service.go — CRUD on tenants + user_tenants
- internal/handlers/tenant_handler.go — HTTP handlers with auth checks
- internal/auth/tenant_resolver.go — X-Tenant-ID header middleware,
  defaults to user's first tenant for scoped routes

Authorization: owners/admins can invite and remove members. Cannot
remove the last owner. Users can remove themselves. TenantResolver
applies to resource routes (cases, deadlines, etc.) but not tenant
management routes.
2026-03-25 13:27:39 +01:00

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) — kanzlai schema
  • Deploy: Dokploy on mLake (kanzlai.msbls.de)
Description
AI-powered law firm tools
Readme 8.1 MiB
Languages
TypeScript 51.8%
Go 47.8%
Dockerfile 0.1%
CSS 0.1%