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

3.5 KiB
Raw Blame History

ApiCore – Projektkontext für Claude Code

Digitale Imkereiverwaltung für Wabenhain. Fachliche Quelle der Wahrheit: docs/lastenheft.md. Architektur- und Modulschnitt: ARCHITECTURE.md. Fortschritt/Aufgaben: 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).

# 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):

# 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.