m 4296da5583 feat(akten): Phase D — Akten (Mandate) CRUD UI
- TSX pages: list, create form, detail with Verlauf/Parteien tabs +
  Fristen/Termine/Dokumente/Notizen placeholders for future phases
- Client TS bundles for each page (search, filter, tab switching, inline
  title edit, party add/remove, delete-confirm modal, collaborator picker)
- Sidebar refactored into groups (Arbeit/Werkzeuge/Wissen/Ressourcen);
  Akten as first Arbeit entry; Fristen/Termine shown disabled with tooltip
- Backend: /api/me, /api/users, /api/akten/{id}/events + AkteService.ListEvents
- Server routes for /akten, /akten/neu, /akten/{id} and tab sub-routes
- i18n: full DE/EN strings for Akten UI + sidebar groups; title attr support
- Lime CTAs (#c6f41c), office badges, status chips, audit-trail feed
- Office-scoped visibility (firm_wide_visible partner-only, delete
  partner/admin-only) gated in UI; backend enforces regardless
- Graceful DATABASE_URL-unset message on list page; no 5xx
2026-04-16 15:27:52 +02:00

paliad

Paliad — patent practice platform for HLC colleagues. Knowledge tools (Kostenrechner, Glossar, Gebührentabellen, Checklisten, Gerichtsverzeichnis, Links, Downloads) plus Aktenverwaltung (matters, deadlines, appointments, documents — Phase 0 in progress).

Domain: paliad.de (legacy: patholo.de, patholo.msbls.de). Repo: mAi/paliad on mgit.msbls.de.

Stack

  • Frontend: Bun + custom JSX/TSX renderer (no React), per-page client TS bundles
  • Backend: Go (net/http), embedded migrations via golang-migrate/migrate/v4
  • Auth: Supabase password (cookie session, @hoganlovells.com / @hlc.* email gate)
  • DB: youpc Supabase Postgres, paliad schema (office-scoped RLS — see docs/design-kanzlai-integration.md §2)
  • Hosting: Dokploy compose Zx147ycurfYagKRl_Zzyo on mlake

Database migrations

Migrations live in internal/db/migrations/ as NNN_description.up.sql + .down.sql pairs. They are embedded into the Go binary via embed.FS and applied automatically at server startup (before the HTTP listener binds) when DATABASE_URL is set.

Add a new migration:

internal/db/migrations/012_<description>.up.sql
internal/db/migrations/012_<description>.down.sql

The down file is required and must reverse the up cleanly (verified by adding a one-off down test before merge).

To run migrations against a local Postgres:

docker run -d --name paliad-pg -e POSTGRES_PASSWORD=test -p 5432:5432 postgres:16-alpine
# bootstrap a mock auth schema (auth.users + auth.uid()) — required because
# the migrations reference Supabase-provided objects:
psql postgres://postgres:test@localhost:5432/postgres -f internal/db/migrations/_dev/mock_supabase_auth.sql
DATABASE_URL='postgres://postgres:test@localhost:5432/postgres?sslmode=disable' \
SUPABASE_URL=stub SUPABASE_ANON_KEY=stub \
go run ./cmd/server

Environment

Variable Required Purpose
PORT no (default 8080) HTTP listen port
SUPABASE_URL yes Supabase project URL (auth)
SUPABASE_ANON_KEY yes Supabase anon key (auth)
DATABASE_URL optional today, required after Phase B Direct Postgres conn for migrations + services
GITEA_TOKEN optional Gitea API token for private file proxy

Development

make build       # compile backend + frontend
make test        # run Go tests + frontend tests
go build ./...   # backend only

Deploy

Push to main → Gitea webhook → Dokploy auto-deploy on mlake.

Description
patholo.de — Patent knowledge sharing platform for HL colleagues
Readme 18 MiB
Languages
Go 50.7%
TypeScript 37.4%
CSS 6.7%
PLpgSQL 4.5%
HTML 0.3%
Other 0.3%