Deployment

Vercel projects

Import each repository in the Vercel dashboard (Add New → Project → Import Git Repository).

Vercel projectRepositoryRoot directoryDomain
coipe-webfuisl/coipeapps/webcoipe.app, *.coipe.app (later)
coipe-docsfuisl/coipe-docs.docs.coipe.app
ceo-of-little-peoplefuisl/ceo-of-little-people.ceooflittlepeople.com, www.ceooflittlepeople.com

Framework preset Next.js, install command pnpm install --frozen-lockfile, Node 24. Each repo's vercel.json sets region sin1. For coipe-web, set API_ORIGIN to the cluster's API origin once it exists, so /api/* is rewritten to it.

DNS

Both domains are registered at Spaceship. The plan (ADR-003):

  1. Add coipe.app and ceooflittlepeople.com to Cloudflare (Free plan).
  2. Change the nameservers at Spaceship to the two Cloudflare gives you. If DNSSEC is on at Spaceship, turn it off first and re-enable it from Cloudflare afterwards.
  3. Point Vercel-hosted names at Vercel with DNS-only (grey cloud) records: apex A 76.76.21.21 or flattened CNAME cname.vercel-dns.com, subdomains CNAME cname.vercel-dns.com. Check the exact values Vercel shows for each domain.
  4. Cluster-hosted names are created by the Cloudflare Tunnel configuration in fuisl/coipe-infra.

coipe.app is on the HSTS preload list (all .app domains are), so it only works over HTTPS.

API

Merges to main in fuisl/coipe that touch apps/api or packages/ build ghcr.io/fuisl/coipe-api:main-<timestamp>-<sha>. Flux image automation in fuisl/coipe-infra picks it up and commits the bump. Roll back with git revert in coipe-infra.