Global infra ยท review & notes system ยท 2026-06-24

ClientsFlow Notes โ€” one domain for every review note

All house-style review HTML now lives on a single Cloudflare project with hierarchical paths, and auto-mirrors to one Notion DB. No more one-project-per-file (which exhausted the Pages cap).

๐ŸŸข root: clientsflow-notes.pages.dev ๐Ÿ”ต path: /<repo>/<doc>/ ๐ŸŸฃ Notion: master "Reports" DB

What changed

Before
1 fileโ†’1 CF projectโ†’cap hit ๐Ÿ’ฅ
~100 projects, hit the Pages project limit; deploys started failing.
After
all notesโ†’1 projectโ†’/repo/doc/ paths
A persistent local root accumulates notes; one deploy re-uploads the whole tree.
Auto-Notion
note deploysโ†’Reports DB pageโ†’live embed
Every reviewable note now also creates/updates a row in the master "Reports" DB (child of "Databases").
Client staging rule
client siteโ†’clientname-yy-mm-dd
New normative slug for client website staging (separate from notes).

How addressing works /<repo>/<doc>/

PieceRuleExample
Rootone Pages projectclientsflow-notes.pages.dev
Top foldergit repo basename of the file/ghl-funnel/
Leaf folderdoc slug โ€” note folder name (climbs past site/dist/build); filename stem otherwise/journey-visualizer/
Indexauto-generated root page lists every note grouped by repoclientsflow-notes.pages.dev/

The pieces

FileRole
~/.claude/hooks/notes_lib.pyshared lib: slug/hierarchy, house-style root index, single-project deploy, Notion create-or-update
~/.claude/hooks/cf-staging-deploy.pyStop hook: place reviewable notes โ†’ one deploy โ†’ mirror to Notion (fail-open)
~/.claude/clientsflow-notes/persistent local root that accumulates every note (the deploy source)
Reports DB 74f54118โ€ฆmaster Notion DB under "Databases" โ€” every note gets a row + live embed
New global rule โ€” client staging naming. Client website/landing-page staging deploys use a dated, normative slug: clientcompanyname-yy-mm-dd โ†’ clientcompanyname-yy-mm-dd.pages.dev. This is separate from the notes system (review docs go to clientsflow-notes; client sites stay one project per client, now consistently named).