Internal · Reference
Reference for everything decided in the Sept 10 session: repo naming, the client/internal split, and the two brand systems. Read this instead of the individual .md docs — it's the same content, rendered.
Every client repo — proposal-stage or a signed full project — comes from
platform/build/new-client.sh. The name depends on whether Firefly is a delivery partner:
| Engagement | Repo name | Command |
|---|---|---|
| Firefly x Mangrove joint client | mg-ff-client-<CODE> | new-client.sh --ff <CODE> "<Name>" |
| Mangrove-solo client | mg-client-<CODE> | new-client.sh <CODE> "<Name>" |
firefly-partners-x-mg, org Mangrove-Web-Development) as a collaborator —
do that for every Firefly-partnered repo.
Project codes are standardized as CODE_0026 (e.g. KIND_0026, BOR_0026) —
always include the numeric suffix, and use the client's real full name alongside the code, not just the code alone.
Every scaffolded repo gets both, automatically:
The gate fails closed: if INTERNAL_PASSWORD is never set, /internal/* stays locked, full stop.
wrangler pages secret put for the password to
actually take effect. Hit this twice this session.
printf '%s' '<password>' | CLOUDFLARE_ACCOUNT_ID=69e5e3e036619168d7a1ab4b9b9b1fa5 \
wrangler pages secret put INTERNAL_PASSWORD --project-name <project>
./publish.sh # redeploy — required to bind the secret
Put this at the very top of any page under /internal/* — same banner, same copy, regardless of which brand the page otherwise uses. It's a signal about audience, not brand.
<div class="internal-banner">Internal — not for client sharing</div>
.internal-banner{
background:#B45309; color:#fff;
font:600 12px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
letter-spacing:.06em; text-transform:uppercase; text-align:center; padding:.6rem 1rem;
}
The hub index groups everything three levels deep: section (MG Internal / Tools & Projects / MG Clients + BD / Firefly x Mangrove / Made for Good / The Collective) → subsection (e.g. Estimates + Resourcing, Clients) → client overview (name + code) → items. Firefly-partnered clients (CAF, RHF, INEX, KIND) live under one Firefly x Mangrove section rather than each getting their own top-level block; Mangrove-solo clients (TFF, etc.) keep their own section.
Where each thing on the hub actually lives. The hub only lists the external ones; each is published from its own repo to its own Cloudflare Pages project. Internal docs (this doc, Data Architecture, RHF resourcing) are published straight from the hub repo.
| Hub entry | Live at | Source repo |
|---|---|---|
| The hub + its internal docs | docs.mangrove-web.com | maiya-mangrove/mangrove-docs (local: MG-assets) |
| Firefly x Mangrove · CAF | caf-proposal.pages.dev | Mangrove-Web-Development/mg-ff-client-CAF_0026 |
| Firefly x Mangrove · RHF | rhf-artifacts.pages.dev | mg-ff-client-RHF_0026 |
| Firefly x Mangrove · INEX | insight-exposure.pages.dev | mg-ff-client-INEX_0026 |
| Firefly x Mangrove · KIND | kids-in-need-of-defense.pages.dev | mg-ff-client-KIND_0026 |
| Firefly x Mangrove · shared map, BOR estimate, RHF resourcing | mgff.mangrove-web.com | Mangrove-Web-Development/mg-ff-shared |
| MG Clients + BD · Trottier | trottier-family-foundation.pages.dev | mg-client-TFF_0026 |
| MG Internal · Base Proposal Deck | mangrove-base-deck.pages.dev | none — source in the mangrove-docs repo (platform/decks/), deployed separately (too large for the hub) |
| Made for Good · Overview + Data Hub | madeforgood.mangrove-web.com | Mangrove-Web-Development/mg-ff-made-for-good |
| The Collective · Directory | mg-collective.pages.dev | maiya-mangrove/mg-collective (private, not org-wide) |
| Tools · Estimates | mg-estimates.pages.dev | local (no org repo yet) |
| Tools · Proposal Editor | not deployed yet | Mangrove-Web-Development/mg-proposal-editor |
| Tools · Claude Code Training | claude-code-training-64x.pages.dev | Mangrove-Web-Development/mg-claudecode-training |
Naming convention (now consistent): Firefly-partnered client repos are mg-ff-client-<CODE> (CAF, RHF, INEX, KIND, BOR); Mangrove-solo client repos are mg-client-<CODE> (TFF, POTR). A couple of local folders still read mg-client-* for CAF/RHF even though their repos are mg-ff-client-* — cosmetic, left as-is to avoid disrupting open sessions.
Pick one per document based on whether Firefly is a delivery partner on that engagement. Never blend them, never improvise a third palette — that's exactly how the FFxMG brand went missing for months before this session.
Deep teal + crimson, Newsreader + DMSans. For any Mangrove-only work — no Firefly partnership.
In the repo: platform/docs/brand/mangrove.md + tokens.css · starter template platform/templates/brand/mangrove-page.html
Firefly's real brand colors (yellow/purple/orange, off-black), Stabil Grotesk + Monosten. For Firefly-partnered client engagements only — not Made for Good.
In the repo: platform/docs/brand/firefly-mangrove.md + firefly-mangrove-tokens.css · starter template platform/templates/brand/firefly-mangrove-page.html
mg-ff-made-for-good) is a third, separate brand —
Maiya + Jen's own venture, not an instance of FFxMG client work. It keeps its own look
(green, Fraunces). Don't apply either brand above to it.
| File | Use for |
|---|---|
platform/templates/brand/mangrove-page.html | MG, client-facing |
platform/templates/brand/mangrove-page-internal.html | MG, internal (banner + gate) |
platform/templates/brand/firefly-mangrove-page.html | FFxMG, client-facing |
platform/templates/brand/firefly-mangrove-page-internal.html | FFxMG, internal (banner + gate) |
--ff yet under live conditions.