Files
ApiCore/CLAUDE.md
T
Nick SzaunigandClaude Opus 5.5 c01a38835a feat: platform backbone and field capture, first part (checkpoint)
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]>
2026-10-13 17:57:54 +02:00

77 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.