API contract v1

JSON API under /api. Nginx/Angular dev proxy keeps browser calls same-origin. IDs are UUID strings; dates ISO-8601. Error responses are ProblemDetail with status, title, detail, optional errors. Request bodies use lowerCamelCase. Collections initially return JSON arrays, bounded server-side where needed.

Authentication (both)

Projects (both)

Pro

Local ports

Lite web 4200, API 8080, PostgreSQL 5433. Pro web 4300, API 8081, PostgreSQL 5434; optional dev SMTP Mailpit UI 8025. Container backend listens 8080 in both. DB name starter, DB user starter. Variables DB_URL, DB_USERNAME, DB_PASSWORD, JWT_SECRET, APP_ORIGIN, COOKIE_SECURE, APP_SEED_ENABLED, APP_SEED_ADMIN_EMAIL, APP_SEED_ADMIN_PASSWORD.