California Forever Brand Guide
Digital brand guide site for California Forever — the first client implementation of G&M's brand-guide product. Next.js app covering colors, typography, logo, voice, photography, and applications.
Client Contacts
- Anders Engnell — Chief of Staff (primary day-to-day contact)
- Jan Sramek — CEO (direction / approvals)
Same contacts as the main California Forever project — see ../CLAUDE.md.
Site Reference
| Local Path | /Users/edowns/Projects/california-forever-brand-guide |
| Local URL | http://localhost:3000 |
| Production URL | https://california-forever-brand-guide.vercel.app |
| GitHub | https://github.com/ericdowns/cf-brand-guide |
| Deployment | Vercel (auto-deploy on push to main) |
| Stack | Next.js 16 · React 19 · Tailwind v4 · MDX · FlexSearch · Milo Serif OT + Outfit |
Project Info
- Harvest project: Retainer #3 2026 (id
48006319, client: California Forever, Inc.) — current active retainer; no dedicated brand-guide project exists in Harvest, so time logs against the retainer. - Job Number: Rolled into CF retainer — TBD if a separate job number is ever assigned
- Quote: Not separately quoted — retainer hours
- Phase: Active — initial build deployed
Project Status
2026-04-21 — Content refactored into JSON, /api/brand endpoints live, consumed by Slack MCP
All narrative guide content (brand-foundation, voice, messaging, photography, applications) pulled out of React pages into structured JSON under content/*.json. Added /api/brand index + /api/brand/[category] endpoints exposing all 9 categories with CORS + 60s SWR caching. Pages re-render identically from JSON; visual parity verified in Chrome.
These endpoints are now consumed in production by the Slack-native brand guide assistant at https://brand-guide-mcp.vercel.app. When someone types /brand colors in G&M's Slack, it fetches this site's /api/brand/colors and renders the palette with native rich_text color swatches.
Sibling project: ../../brand-guide-mcp/ — see that README for the bot side.
2026-04-21 — Initial deploy + password gate removed
Started the day with a fresh Next.js project already wired up (landing page, password gate, brand-foundation / color / typography / logo / iconography / voice-and-tone / photography / messaging / applications / assets routes). Deployed to Vercel for the first time:
- GitHub repo:
ericdowns/cf-brand-guide(already existed and pushed) - Vercel project:
california-forever-brand-guide(linked but had zero deployments) - Disabled SSO protection (
all_except_custom_domains→ off) so the site is publicly reachable - Triggered the first production deploy via
vercel deploy --prod - Updated Projects Dashboard entry so the URL matches reality (was
cf-brand-guide.vercel.app, nowcalifornia-forever-brand-guide.vercel.app)
Then removed the in-app password gate entirely — stripped the sessionStorage auth from app/page.tsx and the auth guard useEffect from app/(guide)/layout.tsx. Pushed to main, Vercel auto-deployed, site is now fully public.
Closed out the session by setting up project notes (this file) and adding a CLAUDE.md at the project root with stack, routes, tokens, and gotchas — so future sessions pick up cold. Also removed a dead proxy.ts file left over from an earlier auth approach (Next.js middleware must be named middleware.ts, so it was never invoked).
Status: Live and public at california-forever-brand-guide.vercel.app. No auth. No custom domain. Project notes + CLAUDE.md in place.
Related
| Location | Contents |
|---|---|
../../brand-guide-research/ |
The source PRD and deep research that defined this product — California Forever is the first client implementation |
../../grainandmortar-brand-guide/ |
Sibling site — same architecture, G&M's own brand guide. Scaffolded from this repo on 2026-04-26 with all CF content stripped. Both are tenants of brand-guide-mcp. |
../../brand-guide-mcp/ |
The Slack-native brand guide assistant. Consumes this site's /api/brand/* as the california-forever tenant. Edit content here → MCP picks it up within ~60s via fetch revalidate. |
Docs
| File | Description |
|---|---|
| README.md | This file — project status and reference |
Open Items
- Assign client contacts
- Decide on custom domain (if any)
- Confirm scope vs PRD — which sections in
app/(guide)/are in-scope for v1 vs later