Internal — not for client sharing

Internal · Reference

Client Repos, Branding & Structure

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.

1. Client repo naming

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:

EngagementRepo nameCommand
Firefly x Mangrove joint clientmg-ff-client-<CODE>new-client.sh --ff <CODE> "<Name>"
Mangrove-solo clientmg-client-<CODE>new-client.sh <CODE> "<Name>"
--ff also prints the command to add Firefly's GitHub team (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.

2. Client area vs. internal area

Every scaffolded repo gets both, automatically:

published/ <token>/ # client-facing — share this link index.html internal/ <token>/ # gated — never shared with the client functions/ _middleware.js # Basic Auth gate for /internal/*

The gate fails closed: if INTERNAL_PASSWORD is never set, /internal/* stays locked, full stop.

Gotcha: setting the Pages secret does not apply to an already-live deployment. You must redeploy after 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

Visual marker for internal pages

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.

Internal — not for client sharing
<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;
}

2a. docs.mangrove-web.com hub structure

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.

Repo map — every hub entry to its source

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 entryLive atSource repo
The hub + its internal docsdocs.mangrove-web.commaiya-mangrove/mangrove-docs (local: MG-assets)
Firefly x Mangrove · CAFcaf-proposal.pages.devMangrove-Web-Development/mg-ff-client-CAF_0026
Firefly x Mangrove · RHFrhf-artifacts.pages.devmg-ff-client-RHF_0026
Firefly x Mangrove · INEXinsight-exposure.pages.devmg-ff-client-INEX_0026
Firefly x Mangrove · KINDkids-in-need-of-defense.pages.devmg-ff-client-KIND_0026
Firefly x Mangrove · shared map, BOR estimate, RHF resourcingmgff.mangrove-web.comMangrove-Web-Development/mg-ff-shared
MG Clients + BD · Trottiertrottier-family-foundation.pages.devmg-client-TFF_0026
MG Internal · Base Proposal Deckmangrove-base-deck.pages.devnone — source in the mangrove-docs repo (platform/decks/), deployed separately (too large for the hub)
Made for Good · Overview + Data Hubmadeforgood.mangrove-web.comMangrove-Web-Development/mg-ff-made-for-good
The Collective · Directorymg-collective.pages.devmaiya-mangrove/mg-collective (private, not org-wide)
Tools · Estimatesmg-estimates.pages.devlocal (no org repo yet)
Tools · Proposal Editornot deployed yetMangrove-Web-Development/mg-proposal-editor
Tools · Claude Code Trainingclaude-code-training-64x.pages.devMangrove-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.

3. Two brand systems

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.

MG

Mangrove-solo

Deep teal + crimson, Newsreader + DMSans. For any Mangrove-only work — no Firefly partnership.

#04404a
#00646b
#c71a43
#ff5942
Mangrove Web [Client]

Page headline

In the repo: platform/docs/brand/mangrove.md + tokens.css · starter template platform/templates/brand/mangrove-page.html

FFxMG

Firefly x Mangrove

Firefly's real brand colors (yellow/purple/orange, off-black), Stabil Grotesk + Monosten. For Firefly-partnered client engagements only — not Made for Good.

#FFC817
#868BFC
#FF661F
#141414
Firefly Partners[Client] [Client] Label

Page headline

In the repo: platform/docs/brand/firefly-mangrove.md + firefly-mangrove-tokens.css · starter template platform/templates/brand/firefly-mangrove-page.html

Made for Good (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.

Templates

FileUse for
platform/templates/brand/mangrove-page.htmlMG, client-facing
platform/templates/brand/mangrove-page-internal.htmlMG, internal (banner + gate)
platform/templates/brand/firefly-mangrove-page.htmlFFxMG, client-facing
platform/templates/brand/firefly-mangrove-page-internal.htmlFFxMG, internal (banner + gate)

What's still open