chore: planning docs + backend/frontend scaffold + MVP Prisma schema

- CLAUDE.md, ARCHITECTURE.md, TASKS.md per Lastenheft-Vorgabe
- ApiCore-Backend: NestJS scaffold, Prisma 7 (DATABASE_URL via prisma.config.ts)
- ApiCore-Frontend: Next.js App Router scaffold (TS, Tailwind, ESLint)
- prisma/schema.prisma: alle MVP-Entitaeten aus Abschnitt 13/4.2-4.22/26,
  validiert und Client generiert

Grundgeruest (TASKS.md #0) noch nicht vollstaendig: shadcn/ui, TanStack Query,
PWA-Manifest, deploy/k8s/, Dockerfiles fehlen noch.
This commit is contained in:
Nick Szaunig committed 2026-08-21 04:48:16 +02:00
commit c4a2d0648e
255 files changed
+46918

No files matched your search

+76
View File
@@ -0,0 +1,76 @@
# ApiCore – Projektkontext für Claude Code
Digitale Imkereiverwaltung für Wabenhain. Fachliche Quelle der Wahrheit: [`docs/lastenheft.md`](docs/lastenheft.md). Architektur- und Modulschnitt: [`ARCHITECTURE.md`](ARCHITECTURE.md). Fortschritt/Aufgaben: [`TASKS.md`](TASKS.md).
## Ordnerstruktur
```
ApiCore/
├── docs/lastenheft.md Fachliches Lastenheft (verbindlich)
├── ApiCore-Backend/ NestJS API (TypeScript, Prisma, PostgreSQL)
├── ApiCore-Frontend/ Next.js App Router (TypeScript, Tailwind, shadcn/ui)
├── deploy/k8s/ Kubernetes-Manifeste (Deployment, Service, Ingress, ConfigMap/Secret-Vorlagen)
├── CLAUDE.md Diese Datei
├── ARCHITECTURE.md Modulschnitt, Auth-Flow, Entscheidungen/Abweichungen
└── TASKS.md Abhakbare Aufgabenliste (MVP / v1.x / Später)
```
Ein Git-Repo für beide Projekte gemeinsam, Root ist `ApiCore/`. Feature-Branches pro Modul, siehe TASKS.md.
## Tech-Stack
**Backend** (`ApiCore-Backend/`): Node.js, TypeScript, NestJS, Prisma ORM gegen PostgreSQL (`DATABASE_URL` aus Environment), class-validator/class-transformer für Validierung, @nestjs/swagger für OpenAPI unter `/api/v1/...`, JWT-Auth (Access + Refresh, Passport), Jest für Tests.
**Frontend** (`ApiCore-Frontend/`): Next.js (App Router), TypeScript, Tailwind CSS, shadcn/ui, TanStack Query, Vitest + React Testing Library für Tests. Mobile-first, PWA-Manifest von Anfang an.
**Betrieb**: Beide Projekte containerisiert, bestehendes Kubernetes-Cluster, bestehende PostgreSQL-Instanz (keine eigene DB-Infrastruktur, kein Managed-Service).
## Lokal starten
Voraussetzung Backend: laufende PostgreSQL-Instanz, `.env` mit `DATABASE_URL` (siehe `.env.example`).
```bash
# Backend
cd ApiCore-Backend
npm install
npx prisma migrate dev # Schema anwenden
npm run start:dev # http://localhost:3001, Swagger unter /api/v1/docs
# Frontend
cd ApiCore-Frontend
npm install
npm run dev # http://localhost:3000, erwartet Backend unter NEXT_PUBLIC_API_URL
```
## Lint / Typecheck / Tests / Build
Pro Projekt einzeln ausführen (eigenes `package.json`):
```bash
# Backend (in ApiCore-Backend/)
npm run lint
npm run typecheck # tsc --noEmit
npm run test # Jest unit
npm run test:e2e # Jest e2e (gegen Test-DB)
npm run build
# Frontend (in ApiCore-Frontend/)
npm run lint
npm run typecheck
npm run test
npm run build
```
**Regel:** Nach jedem abgeschlossenen Modul müssen Lint, Typecheck, Tests und Build für das betroffene Projekt grün sein, bevor in TASKS.md ein Haken gesetzt und committet wird.
## Kernprinzipien (siehe ARCHITECTURE.md für Details)
- API-first: jede fachliche Funktion über `/api/v1/...` erreichbar, nicht nur UI-seitig.
- Historie statt Löschen: fachliche Objekte werden nie hart gelöscht, nur deaktiviert/aufgelöst.
- Rollen serverseitig in jedem Endpunkt geprüft (Guards/Decorators), nicht nur UI-seitig ausgeblendet.
- Rückverfolgbarkeitskette Volk → Durchsicht → Behandlung → Ernte → Schleuderung → Honigcharge → Lagerbehälter muss relational abfragbar sein.
- Audit-Log-Grundstruktur ist Fundament, wird früh angelegt (Users/Auth-Modul), bevor die restliche MUSS-Liste folgt.
## Bekannte Annahmen
Fachliche Annahmen, die während der Umsetzung getroffen wurden, stehen in ARCHITECTURE.md unter "Annahmen & offene Fragen". Dort nachsehen, bevor eine neue Annahme getroffen wird.