generated from bastian/boilerplate
120 lines
2.6 KiB
Markdown
120 lines
2.6 KiB
Markdown
# Entwicklung
|
|
|
|
Diese Datei beschreibt die normalen Entwicklungsablaeufe im Monorepo.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
npm ci
|
|
```
|
|
|
|
Abhaengigkeiten werden nur im Root installiert. Workspace-spezifische Befehle
|
|
werden ueber Root-Scripts oder `npm --workspace ...` ausgefuehrt.
|
|
|
|
## Lokaler Start
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
Alternativ getrennt:
|
|
|
|
```bash
|
|
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
|
|
|
|
1. Backend-DTOs und Entities modellieren.
|
|
2. Repository fuer Datenzugriff erstellen oder erweitern.
|
|
3. Service mit Fachlogik implementieren.
|
|
4. Controller nur als HTTP-Rand und Permission-Deklaration verwenden.
|
|
5. Permission in `roles/permissions.ts` ergaenzen, falls noetig.
|
|
6. Migration erzeugen und kontrollieren.
|
|
7. API-Client-Generator aktualisieren.
|
|
8. Frontend-Route, Navigation und Page bauen.
|
|
9. Tests fuer Verhalten schreiben.
|
|
10. Qualitaetsbefehle ausfuehren.
|
|
|
|
## Migrationen
|
|
|
|
Status anzeigen:
|
|
|
|
```bash
|
|
npm run migration:status
|
|
```
|
|
|
|
Migration erzeugen:
|
|
|
|
```bash
|
|
npm run migration:generate
|
|
```
|
|
|
|
Migration ausfuehren:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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.
|