docker-compose.yml)pnpm installpnpm --filter @bluelight-hub/backend prisma:migratepnpm --filter @bluelight-hub/backend dev (oder Root: pnpm dev)pnpm --filter @bluelight-hub/backend builddev/start:dev: Watch-Modetest, test:watch, test:cov: Jest Unit-Testsprisma:migrate, prisma:deploy, prisma:seed, prisma:studiodocs:build (Compodoc), docs:servehttp://localhost:3090/api (JSON: /api-json)packages/shared generiert. Nach API-Änderungen:pnpm --filter @bluelight-hub/shared generate-apipackages/backend/prisma/schema.prismaDas Backend nutzt TypeScript Path Aliases für saubere Imports gemäß Hexagonal Architecture (siehe ADR-022):
| Alias | Ziel | Layer | Verwendung |
|---|---|---|---|
@domain/* |
src/domain/* |
Domain Layer | Business Logic, Entities, Value Objects, Aggregates |
@application/* |
src/application/* |
Application Layer | Use Cases, Commands, Queries |
@infrastructure/* |
src/infrastructure/* |
Infrastructure Layer | Repositories, Adapters, External Services |
Beispiel:
Example :// ✅ RICHTIG: Mit Path Alias
import { Result } from '@domain/common/result';
import { GeoCoordinate } from '@domain/value-objects/geo-coordinate';
// ❌ FALSCH: Relative Imports
import { Result } from '../../../domain/common/result';Konfiguration:
tsconfig.json (Zeilen 29-34) - Compiler-Auflösungjest.config.js (Zeilen 12-16) - Test-Module-AuflösungDependency Rules (ADR-022):
Example :Domain Layer (keine externen Dependencies)
↑ importiert von
Application Layer (Domain Layer only)
↑ importiert von
Infrastructure Layer (Domain + Application Layer)Validation:
tsc --noEmit prüft TypeScript-Kompilierung (~1.5s)pnpm check:deps erkennt zirkuläre DependenciesVor jedem Commit werden automatisch folgende Checks ausgeführt:
TypeScript Smoke Test (~1.5s)
pnpm --filter @bluelight-hub/backend exec tsc --noEmitCode Quality Checks (Biome Linter)
pnpm lint-stagedHook-Konfiguration: .husky/pre-commit
Hinweise:
--no-verify verwenden - würde wichtige Checks überspringendocs/architecture/.env.example als Vorlage verwendengenerate/migrate ausführen