lilith-platform.live/codebase/@features/demimonde/DEPLOY.md
Natalie 02483204fd infra: repoint @lilith npm registry + Forgejo from dead black to DO cocotte-forge; serve /photos from local disk
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>
2026-06-28 08:09:33 -04:00

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&rsquo;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&rsquo;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.