kimai-plugin-heatmap/.planning/RETROSPECTIVE.md
Christopher Mühl 244c7c66fc
chore: archive v1.0 milestone
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 23:25:26 +02:00

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
Metric v1.0
Phases 5
Plans 11
Timeline 1 day
Source LOC ~650
Test LOC ~730