Platform backbone (plan 2026-10-13-plattform-rueckgrat), reviewed tasks: - run roles api/worker/job/all with shared startup checks (Task 1) - schema and migration for DomainEvent, deliveries, JobRun, ThrottlerHit (Task 2) - audit, notifications and domain events written in the same transaction (Task 3) - dispatcher with SKIP LOCKED claims, retries and stale release (Task 4) - worker building blocks: tick, LISTEN/NOTIFY wake-up, health (Task 5) - worker process and entry points (Task 6) - throttler counters in Postgres (Task 19) - separate keys per purpose with key ring (Task 20) - public origin page without exact location (Task 22) - shop keys split into read and write (Task 23) - Kustomize base, components, overlay encry, CI validation (Task 26) Field capture T3 (plan 2026-10-13-t3-erfassung-am-stand), reviewed tasks: - brood frames, read endpoints, apiary overview and offline pack - network basics, offline queue v3, navigation sheets, form building blocks - new inspection with last-time hints and weather, varroa per day, treatment prefill, apiary page with round - inspection photo (Task 10) is implemented, review pending Not rolled out. Remaining tasks follow in later commits. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
77 lines
3.5 KiB
Markdown
77 lines
3.5 KiB
Markdown
# 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. PostgreSQL läuft selbst im Cluster als `StatefulSet` (`deploy/k8s/base/postgres/`, kein externer Managed-Service) – Backup-Verantwortung liegt damit bei diesem Projekt, siehe ARCHITECTURE.md Abschnitt 8.
|
||
|
||
## 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 API_URL (Laufzeit-Env, siehe .env.example)
|
||
```
|
||
|
||
## 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.
|