46 lines
1.9 KiB
Markdown
46 lines
1.9 KiB
Markdown
# 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 |
|