lilith-platform.live/codebase/@features/cocotte-tech/DEPLOY.md

95 lines
3.4 KiB
Markdown

# Cocotte-Tech Deploy Runbook
> **As of 2026-05-18**: Cocotte-tech site is built but not yet deployed.
> Neither `cocotte.io` nor `cocotte.dev` is registered. This doc captures
> the deploy shape so the runbook is ready when DNS goes live.
---
## What this feature ships
Two routes serving two future domains from the same Astro project:
| Route | Future domain | Purpose |
|--------------|-----------------|----------------------------------------|
| `/` | `cocotte.io` | Platform-behind-the-brands marketing. |
| `/oss/` | `cocotte.dev` | Open-source surface; package roster. |
---
## Architecture
Cocotte-tech uses **Astro** with the `@cocotte/*` package scope. Both
pages use `BaseLayout` directly (no NavBar/SiteFoot — each page defines
its own bespoke editorial chrome inline).
| Package | Role |
|-----------------------------|---------------------------------------------|
| `@cocotte/astro-tokens` | CSS variable contract (theme-agnostic) |
| `@cocotte/astro-chrome` | `BaseLayout` primitive |
| `@cocotte/astro-config` | `defineBrandSiteConfig()` factory |
Brand palette: shared between both pages (warm-dark cream-on-velvet,
pink/cyan accents, Archivo Black display). Lives in
`src/styles/tokens.css`.
---
## Source of truth
| Surface | Path |
|--------------------------|-------------------------------------------------------------------|
| Astro project | `codebase/@features/cocotte-tech/site/` |
| cocotte.io page | `codebase/@features/cocotte-tech/site/src/pages/index.astro` |
| cocotte.dev page | `codebase/@features/cocotte-tech/site/src/pages/oss/index.astro` |
| Brand tokens | `codebase/@features/cocotte-tech/site/src/styles/tokens.css` |
| Globals | `codebase/@features/cocotte-tech/site/src/styles/globals.css` |
| Legacy HTML stubs | `codebase/@features/cocotte-tech/{web,oss}/index.html` (kept until cutover) |
---
## Local build
\`\`\`
cd codebase/@features/cocotte-tech/site
bun install
bun run build # → dist/index.html + dist/oss/index.html + sitemap
bun run preview # localhost:4321
bun run dev # hot-reload dev server
\`\`\`
---
## Deploy (pending — cocotte.io + cocotte.dev not yet registered)
One Astro project, two domains. Each domain’s nginx vhost serves
the slice of `dist/` relevant to it:
\`\`\`
cd codebase/@features/cocotte-tech/site
bun install
bun run build
# cocotte.io — root index
rsync -avz --delete \\
--include='/index.html' --include='/_astro/***' --include='/favicon.ico' \\
--include='/sitemap*.xml' --include='/robots.txt' \\
--exclude='/oss/' --exclude='*' \\
dist/ \\
vps-0:/var/www/cocotte-io/web/
# cocotte.dev — OSS surface (rsync the /oss/ subtree as the domain root)
rsync -avz --delete \\
dist/oss/ \\
vps-0:/var/www/cocotte-dev/web/
rsync -avz \\
dist/_astro/ \\
vps-0:/var/www/cocotte-dev/web/_astro/
\`\`\`
The shared `_astro/` chunk dir gets synced to both targets so each
domain has self-contained asset URLs.
Nginx vhosts:
- `deployments/@domains/cocotte.io/nginx/prod.conf` (not yet authored)
- `deployments/@domains/cocotte.dev/nginx/prod.conf` (not yet authored)