# Codex Build Plan Dit document is de uitvoeringsvolgorde voor Codex. Werk fase per fase. Sla geen fases over tenzij technisch noodzakelijk. ## Algemene bouwregels - Lees eerst README.md, AGENTS.md en alle docs in deze map. - Bouw documentatiegedreven. - Geen quick hacks. - Geen mock-only functionaliteit als echte functionaliteit verwacht wordt. - Voeg bij elke fase tests toe waar zinvol. - Update TODO.md na elke afgeronde fase. - Houd frontend en backend consistent. - API-contracten volgen API_SPECIFICATION.md. - Database volgt DATABASE_SCHEMA.md. ## Fase 1 — Repo Foundation Doel: werkende basisrepo. Taken: 1. Backend scaffold maken in `backend/`. 2. Frontend scaffold maken in `frontend/`. 3. Docker compose toevoegen voor backend, frontend, db, redis. 4. `.env.example` toevoegen. 5. Basis README quickstart bijwerken. 6. Health checks toevoegen. Acceptatiecriteria: - backend start lokaal - frontend start lokaal - database container start - health endpoint werkt ## Fase 2 — Database Foundation Doel: PostGIS schema opzetten. Taken: 1. SQLAlchemy + GeoAlchemy2 toevoegen. 2. Alembic initialiseren. 3. projects, areas, datasets, analysis_runs toevoegen. 4. PostGIS extensie activeren. 5. Spatial indexes voorzien. Acceptatiecriteria: - migraties draaien succesvol - tests kunnen project en area aanmaken - geometrie wordt correct opgeslagen ## Fase 3 — Project & Area API Doel: projecten en gebieden beheren. Taken: 1. CRUD routes voor projects. 2. CRUD routes voor areas. 3. GeoJSON polygon validatie. 4. Area oppervlakte berekenen. 5. Frontend project list/detail. 6. Map draw basis. Acceptatiecriteria: - gebruiker kan project maken - gebruiker kan polygon tekenen en opslaan - area verschijnt op kaart ## Fase 4 — Dataset Manager Doel: datasets uploaden en metadata lezen. Taken: 1. Upload endpoint. 2. Bestandsopslag in storage/uploads. 3. Raster metadata extraction met Rasterio. 4. Vector metadata extraction met GeoPandas/Fiona. 5. Dataset list/detail UI. 6. Statussen tonen. Acceptatiecriteria: - GeoTIFF upload toont CRS, bounds, bands, resolutie - GeoJSON/shapefile upload toont CRS, bounds, feature count ## Fase 5 — Raster Core Doel: rasterdata verwerken. Taken: 1. Raster clipping by area. 2. Raster preview generation. 3. Raster tiling met tile metadata. 4. Tile opslag. 5. UI acties voor clip/tile. Acceptatiecriteria: - raster kan op area geclipt worden - tiles worden aangemaakt - tile metadata bevat transform en bounds ## Fase 6 — Vector Core Doel: vectordata verwerken. Taken: 1. Vector import naar PostGIS. 2. CRS transform naar 4326. 3. Geometry validation/repair. 4. Vector clipping by area. 5. Feature count en area metrics. Acceptatiecriteria: - vectorlaag wordt zichtbaar op kaart - clipping werkt - features zitten in PostGIS ## Fase 7 — Reference Data Doel: referentielaag beschikbaar maken. Taken: 1. OSM fetcher als fallback implementeren. 2. GRB connector interface ontwerpen. 3. Reference datasets opslaan als datasets + vector_features. 4. UI voor referentielaag. Acceptatiecriteria: - OSM buildings kunnen voor area worden opgehaald - referentielaag zichtbaar op kaart - GRB-interface is voorbereid zonder app te blokkeren als externe endpoint nog niet volledig is ## Fase 8 — Detection Lab Doel: objectdetectie end-to-end. Taken: 1. Model config en YOLO wrapper. 2. Detection analysis run. 3. Inference op raster tiles. 4. Pixel bbox naar geospatial polygon. 5. Detecties opslaan. 6. Detectielaag tonen. 7. GeoJSON export. Acceptatiecriteria: - detection job kan gestart worden - duidelijke fout als model ontbreekt - detecties worden als polygonen op kaart getoond - export werkt ## Fase 9 — QA/QC Lab Doel: detecties vergelijken met referentie. Taken: 1. IoU matching. 2. TP/FP/FN berekening. 3. Precision/recall/F1. 4. quality_checks en quality_findings opslaan. 5. QA UI met metrics en foutlagen. Acceptatiecriteria: - detection run kan vergeleken worden met referentielaag - false positives/false negatives zichtbaar - metrics kloppen op testfixtures ## Fase 10 — Export & Portfolio Demo Doel: bruikbare einddemo. Taken: 1. Exportcentrum. 2. Demo project seed. 3. Portfolio workflow documenteren. 4. Smoke tests. 5. README bijwerken. Acceptatiecriteria: - één demo-workflow werkt end-to-end - docs beschrijven hoe demo te draaien - tests groen ## Niet doen in eerste bouwronde - geen volledige LiDAR Workbench - geen eigen training studio - geen complexe AI-copilot - geen multi-user auth tenzij noodzakelijk - geen zwaar dashboard boven analysefunctionaliteit