in active development
PangoFlow is a browser extension (Manifest V3) written in ClojureScript for tracking self-improvement habits. The idea is to get away from fragile "streak" logic: every bit of effort becomes a Block, and the blocks add up to a contribution heatmap that makes progress visible over time. The popup is for quick capture in the moment; the dashboard is for reviewing and configuring.
More than an extension, PangoFlow is a deliberate exercise in domain design. Before writing any code, I defined a ubiquitous language and an MVP PRD, then structured the architecture to keep business rules isolated from the UI and the browser, testable in plain ClojureScript.
activity, entry,
block-rule, and category modules don't know React, the popup, or the browser exist.
The UI just consumes them.
entry->blocks) hides how effort
turns into blocks across the three measurement modes (completion, count, duration), using fractional blocks
internally and whole blocks in the UI.
unsafe-eval) by using shadow-cljs release bundles instead of dev bundles.
Every domain module has a matching test file. Tests check behavior through stable interfaces (given activities, entries, and rules, the system returns the expected blocks, daily totals, and heatmap cells), without relying on private helpers or UI implementation details.