95 lines
3.4 KiB
Markdown
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)
|