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>
3.1 KiB
Demimonde Deploy Runbook
As of 2026-05-18: Demimonde site is built but not yet deployed. The prod domain
demimondaine.parisis 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.