black/apricot homelan died 2026-06-27. Point everything at the DO store tier: - @lilith npm registry: forge.black.lan/npm.black.lan -> cocotte-forge Verdaccio (134.199.243.61:4873) across bunfig.toml scopes, all deploy.sh .npmrc writers, and package.json publishConfig. - Forgejo URL (git/CI): forge.black.lan -> 134.199.243.61:3000 / :2222. - quinn.www prod.conf /photos: was proxy_pass to dead black_photos (black:8081); now served from local disk (root /var/www/quinn.www/dist). Prevents a future deploy from re-breaking photos. (Phase G: repoint to DO Spaces/CDN later.) Interim bare-IP endpoints; switch to named uvlava infranet hosts once live. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
93 lines
3.1 KiB
Markdown
93 lines
3.1 KiB
Markdown
# Demimonde Deploy Runbook
|
|
|
|
> **As of 2026-05-18**: Demimonde site is built but not yet deployed. The
|
|
> prod domain `demimondaine.paris` is not registered. This doc captures
|
|
> the deploy shape so the runbook is ready when DNS goes live.
|
|
|
|
---
|
|
|
|
## What this feature ships
|
|
|
|
A single-page financial-entity surface for Demimonde, LLC — the office
|
|
that holds bookings, revenue, and invoicing for the talent. Does not
|
|
solicit consumer business. The canonical URL exists for registration
|
|
purposes only.
|
|
|
|
| Route | Purpose |
|
|
|-------|----------------------------------------------------|
|
|
| `/` | Entity card — mailing/correspondence/scope/policy. |
|
|
|
|
---
|
|
|
|
## Architecture
|
|
|
|
Demimonde uses **Astro** with the `@cocotte/*` package scope (Verdaccio
|
|
at `134.199.243.61:4873/`):
|
|
|
|
| Package | Role |
|
|
|-----------------------------|---------------------------------------------|
|
|
| `@cocotte/astro-tokens` | CSS variable contract (theme-agnostic) |
|
|
| `@cocotte/astro-chrome` | `BaseLayout` primitive |
|
|
| `@cocotte/astro-config` | `defineBrandSiteConfig()` factory |
|
|
|
|
Layout: `BaseLayout` direct (no NavBar/SiteFoot — single-page entity has
|
|
no nav). The page’s draft banner + entity card + page footer are
|
|
defined inline with a scoped `<style>` block.
|
|
|
|
Brand palette: warm-dark cream-on-velvet, pink/cyan accents, system
|
|
serif. Lives in `src/styles/tokens.css` overriding the
|
|
`@cocotte/astro-tokens` contract.
|
|
|
|
---
|
|
|
|
## Source of truth
|
|
|
|
| Surface | Path |
|
|
|--------------------------|-------------------------------------------------------------------|
|
|
| Astro project | `codebase/@features/demimonde/site/` |
|
|
| Page | `codebase/@features/demimonde/site/src/pages/index.astro` |
|
|
| Brand tokens | `codebase/@features/demimonde/site/src/styles/tokens.css` |
|
|
| Globals | `codebase/@features/demimonde/site/src/styles/globals.css` |
|
|
| Legacy HTML stub | `codebase/@features/demimonde/web/index.html` (kept until deploy cutover) |
|
|
|
|
Once a prod domain is live and deploy is wired, delete `web/` in a
|
|
single cleanup commit.
|
|
|
|
---
|
|
|
|
## Local build
|
|
|
|
\`\`\`
|
|
cd codebase/@features/demimonde/site
|
|
bun install
|
|
bun run build # → dist/index.html + sitemap-index.xml
|
|
bun run preview # localhost:4321
|
|
bun run dev # hot-reload dev server
|
|
\`\`\`
|
|
|
|
---
|
|
|
|
## Deploy (pending — demimondaine.paris not yet registered)
|
|
|
|
When the domain is live:
|
|
|
|
\`\`\`
|
|
cd codebase/@features/demimonde/site
|
|
bun install
|
|
bun run build
|
|
|
|
rsync -avz --delete \\
|
|
dist/ \\
|
|
vps-0:/var/www/demimonde/web/
|
|
\`\`\`
|
|
|
|
Nginx vhost: `deployments/@domains/demimondaine.paris/nginx/prod.conf`
|
|
(not yet authored — create when DNS lands). Let’s Encrypt via
|
|
certbot at deploy time.
|
|
|
|
---
|
|
|
|
## Dev-server port
|
|
|
|
`astro dev` defaults to `4321`. Pass `--port` to avoid collisions with
|
|
the other brand sites if running multiple at once.
|