2.6 KiB
Entwicklung
Diese Datei beschreibt die normalen Entwicklungsablaeufe im Monorepo.
Installation
npm ci
Abhaengigkeiten werden nur im Root installiert. Workspace-spezifische Befehle
werden ueber Root-Scripts oder npm --workspace ... ausgefuehrt.
Lokaler Start
npm run dev
Alternativ getrennt:
npm run dev:frontend
npm run dev:backend
Das Frontend nutzt den Proxy in apps/frontend/proxy.conf.json, damit /api
lokal an das Backend weitergereicht wird.
Feature-Workflow
- Backend-DTOs und Entities modellieren.
- Repository fuer Datenzugriff erstellen oder erweitern.
- Service mit Fachlogik implementieren.
- Controller nur als HTTP-Rand und Permission-Deklaration verwenden.
- Permission in
roles/permissions.tsergaenzen, falls noetig. - Migration erzeugen und kontrollieren.
- API-Client-Generator aktualisieren.
- Frontend-Route, Navigation und Page bauen.
- Tests fuer Verhalten schreiben.
- Qualitaetsbefehle ausfuehren.
Migrationen
Status anzeigen:
npm run migration:status
Migration erzeugen:
npm run migration:generate
Migration ausfuehren:
npm run migration:run
Generierte Migrationen muessen reviewed werden. Sie duerfen keine versehentlichen Datenverluste, falsche Defaults oder umgebungsspezifische Namen enthalten.
API-Client
Nach API-Aenderungen:
npm run api:generate
Der Client unter packages/api-client/src ist generiert. Aendere stattdessen den
Generator oder ersetze ihn spaeter bewusst durch einen OpenAPI-basierten
Generator.
Tests
npm test
npm run test:backend
npm run test:frontend
Tests sollen Verhalten pruefen, nicht nur Existenz. Backend-Tests fuer Services sollen fachliche Regeln, Fehlerfaelle, Permissions und Datenbankinteraktionen abdecken. Frontend-Tests sollen sichtbares Verhalten, Guards, Interaktionen und API-Fehlerpfade abdecken.
Integrationstests gegen MySQL muessen eine separate Testdatenbank verwenden,
deren Name eindeutig test enthaelt. Tests duerfen niemals gegen
Produktionsdatenbanken laufen.
Qualitaet vor Abschluss
npm run lint
npm run format:check
npm run typecheck
npm test
npm run build
docker build .
Diese Befehle sind die Mindestpruefung fuer Merge und Release.
Fehlerformat
Backend-Fehler werden ueber ApiExceptionFilter in ein konsistentes Format
gebracht. Neue fachliche Fehler sollten ApiError und ErrorCode verwenden,
damit Frontend und Logs stabil bleiben.
Logging
pino-http redigiert sensible Header und Token-Felder. Neue Logs duerfen keine
Secrets, Session-IDs, Cookies, Access Tokens, Refresh Tokens oder ID Tokens
enthalten.