# Retrospective ## Milestone: v1.0 — MVP **Shipped:** 2026-04-08 **Phases:** 5 | **Plans:** 11 ### What Was Built - Nix devshell with process-compose orchestrating MariaDB + Kimai dev server - HeatmapService with timezone-correct daily aggregation and PHPUnit tests - d3.js calendar heatmap with color scale, labels, tooltips, Kimai theme integration - Click-through navigation to Kimai timesheet + project filter dropdown - Streak indicator, summary stats, weekend styling, week-start preference - 30+ tests across PHPUnit and Vitest ### What Worked - Single-day delivery from zero to shipped plugin — tight phase scoping kept momentum - TDD approach caught real issues (bootstrap paths, final class mocking) - Process-compose made the multi-service dev environment ergonomic - IIFE bundle strategy avoided Kimai's Webpack Encore complexity entirely ### What Was Inefficient - SUMMARY files not written for several phases (bookkeeping debt accumulated) - REQUIREMENTS.md checkboxes fell out of sync (7/22 checked despite all shipped) - Phase directory naming inconsistent (phase-2/, phase-3/ vs phases/01-dev-environment/, phases/04-heatmap-interaction/) ### Patterns Established - Ship prebuilt JS in Resources/public/ — don't hook into host app build pipeline - kimai.initialized event + javascriptRequest fallback for widget lifecycle - Callback injection pattern for cell interaction (onCellClick) - Flex wrapper layout for widget + sidebar controls ### Key Lessons - Activity filtering was correctly descoped — project filter covers personal use - Kimai's Tabler theme lacks green scale CSS vars, so hardcoded greens were pragmatic - PHPUnit mocking requires non-final classes — caught early, would bite harder at scale ## Cross-Milestone Trends | Metric | v1.0 | |--------|------| | Phases | 5 | | Plans | 11 | | Timeline | 1 day | | Source LOC | ~650 | | Test LOC | ~730 |