Consumer website starter

A calmer way to decide what's for dinner.

This public site is static by default, typed against the existing API contract, and ready for Cloudflare Workers deployment through OpenNext.

Primary platform

iPhone-first

Recipe import

URL, text, photo

Personalization

Variants, not duplicates

Static landing + live recipe shares

Hero route

cookwithalchemy.com

Legal

/privacy and /terms

ISR page

/recipes/[id]

The starter keeps repo-local content in code today, then leaves room for a CMS later if marketing operations need it.

Product

The website mirrors how the product actually works

The public site stays honest about the system: chat-driven generation, import from real sources, and private personalization layered on canonical recipes.

Generate from intent, not filters

Users talk through what they want to cook, then Alchemy turns that context into a recipe set they can refine before saving.

Import anything worth cooking

A recipe link, cookbook page, or pasted text becomes a structured recipe draft that fits the same downstream pipeline.

Keep the canonical recipe clean

Public recipes stay stable. Personal variants absorb dietary restrictions, equipment limits, and taste preferences.

Architecture

Static first, then selective revalidation where the content is truly live

The starter gives the marketing surface strong defaults without turning the whole site into a permanently server-rendered app.

Static by default

Landing, legal, and SEO pages live in repo-local content so the public site stays fast and diff-friendly.

Typed API integration

Live recipe pages use the existing OpenAPI contracts instead of hand-rolled web-only types.

Cloudflare-native deploys

The consumer site follows the same OpenNext-on-Workers path as admin instead of introducing a second hosting model.

Flow

Where SSR and ISR belong in this stack

Use live rendering sparingly: canonical recipe pages, light personalization, and future referral or waitlist edges. Everything else can stay static and cheap.

01

Land on a search-safe page

Editorial pages and legal routes are static, cache-friendly, and easy to evolve without a CMS.

02

Open a live recipe share route

Recipe pages fetch canonical data from the public API, then revalidate on an interval so shares stay current.

03

Hand off to the app

Calls to action stay lightweight today, then can expand into App Store, waitlist, or auth surfaces without reworking the stack.

Ready to extend

Start static. Add live recipe pages only where they earn their keep.

The public site now has a clear home in the monorepo, a typed API seam, and deployment scaffolding that matches your existing Cloudflare model.