1.9 KiB
1.9 KiB
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 |