Hosting Inventory 2026 06 16
Hosting and deployment inventory — 2026-06-16
Scope: Assistance monorepo app/backend deployment model, Cloudflare configuration, runtime constraints, and operator commands. This inventory is documentation-only and is based on repo-local files and read-only commands.
Evidence inspected#
README.md,AGENTS.md,CLAUDE.mdcompatibility note,.docs/developer.md.mise.tomlpackage.jsonpodman-compose.dev.yml,podman-compose.ymlapps/{www,docs,blog,academy,design-system,ui-library,manager}/package.jsonapps/www/wrangler.toml,apps/manager/wrangler.tomlapps/{docs,blog,academy,design-system,ui-library}/wrangler.jsoncapps/{docs,blog,academy,design-system,ui-library}/open-next.config.ts- Commands:
find apps ...,rg ...,mise tasks | grep ...,find backend/cmd ...,test -f docs/runtime/S02-RUNTIME-PROOF.md
Current deployment model#
- Root docs define
mise run ...as the unified operator entrypoint, withpnpm,backend/Makefile,podman-compose.dev.yml, andpodman-compose.ymlas lower-level surfaces (README.md,AGENTS.md,.docs/developer.md). - Frontends deploy to Cloudflare Workers/Pages; production compose is for backends and infrastructure only (
README.md,podman-compose.yml). - Cloudflare deployment is split between:
- Cloudflare Pages:
apps/www,apps/manager. - Cloudflare Workers via OpenNext:
apps/docs,apps/blog,apps/academy,apps/design-system,apps/ui-library.
- Cloudflare Pages:
- Backend production compose exposes
auth-api,billing-api,academy-api, Postgres, and Meilisearch. The compose file comments identify these as exposed via Caddy onproxy.srv.chavkov.com(podman-compose.yml).
App inventory#
Backend and compose inventory#
Dev compose: podman-compose.dev.yml#
Dev infrastructure exposes:
- Postgres
${POSTGRES_PORT:-3048}:5432 - Meilisearch
${MEILI_PORT:-3049}:7700 - GoTrue auth
${AUTH_PORT:-3060}:9999 - Mailpit SMTP/UI
${MAILPIT_SMTP_PORT:-3061}:1025,${MAILPIT_UI_PORT:-3062}:8025 saas-api${SAAS_API_PORT:-3068}:3070- Prometheus
${PROMETHEUS_PORT:-3069}:9090 - Grafana
${GRAFANA_PORT:-3070}:3000
.docs/developer.md maps this to mise run up/down/logs/ps/health, and root package.json has equivalent services:start|stop|clean|logs scripts using sudo podman-compose --project-name assistance-dev -f podman-compose.dev.yml.
Prod compose: podman-compose.yml#
Production/self-hosted backend stack exposes:
- Postgres
3058:5432 - Meilisearch
3059:7700 auth-apiimage/buildbackend/cmd/auth-api/Dockerfile, host3056, container8090billing-apiimage/buildbackend/cmd/billing-api/Dockerfile, host3057, container8080academy-apiimage/buildbackend/cmd/academy-api/Dockerfile, host3066, container8070
Required production environment variables include ALLOWED_ORIGINS, service-specific *_DATABASE_URL, JWT_SECRET, and MEILI_MASTER_KEY for academy/search. .mise.toml prod tasks use sudo -E podman-compose --project-name assistance-prod -f podman-compose.yml.
find backend/cmd ... output confirmed current backend command surfaces:
1backend/cmd/academy-api/Dockerfile2backend/cmd/academy-api/main.go3backend/cmd/academy-seed/main.go4backend/cmd/auth-api/Dockerfile5backend/cmd/auth-api/main.go6backend/cmd/billing-api/Dockerfile7backend/cmd/billing-api/main.go8backend/cmd/saas-api/main.goCloudflare operator commands#
Selected mise tasks | grep ... output inspected:
1cf:build Build all Cloudflare apps (Pages + Workers)2cf:build:academy Build academy for Cloudflare Workers via OpenNext3cf:build:blog Build blog for Cloudflare Workers via OpenNext4cf:build:docs Build docs for Cloudflare Workers via OpenNext5cf:build:ds Build design-system for Cloudflare Workers via OpenNext6cf:build:manager Build manager for Cloudflare Pages (Vite SPA)7cf:build:ui Build ui-library for Cloudflare Workers via OpenNext8cf:build:www Build www for Cloudflare Pages (static export → .next-build)9cf:deploy Deploy all apps to Cloudflare (requires CLOUDFLARE_API_TOKEN for OpenNext Worker cache population)10cf:deploy:academy Deploy academy to Cloudflare Workers11cf:deploy:blog Deploy blog to Cloudflare Workers12cf:deploy:docs Deploy docs to Cloudflare Workers13cf:deploy:ds Deploy design-system to Cloudflare Workers14cf:deploy:manager Deploy manager to Cloudflare Pages15cf:deploy:ui Deploy ui-library to Cloudflare Workers16cf:deploy:www Deploy www to Cloudflare Pages (www.assistance.bg)17cf:health Check Cloudflare-deployed frontend health (www, docs, ds, ui, academy, manager, blog)18cf:index:search Index docs content into D1 search database19cf:release Full CF release: build all → deploy all → publish backend images through ArtifactoryImportant runtime constraint from .mise.toml: aggregate cf:deploy runs cf:deploy:preflight, which requires CLOUDFLARE_API_TOKEN. The comments state Wrangler OAuth/login is not sufficient for OpenNext Worker deploys because incremental cache population uses the KV bulk API. The token needs at least Workers Scripts edit, Workers KV Storage edit, and Cloudflare Pages edit.
Runtime-proof constraints#
README.mdreferencesdocs/runtime/S02-RUNTIME-PROOF.mdandpnpm verify:root-runtimeas the durable runtime-proof contract.- In the current checkout,
test -f docs/runtime/S02-RUNTIME-PROOF.md; echo $?returned1, so the referenced runtime-proof artifact is absent. - Root docs still state the intended proof scope: guidance consistency, dev infra status/health via
mise, backend build viability, and one representativeapps/wwwproduction-style Playwright path. - Root docs explicitly say this does not prove the full multi-app e2e matrix, env-sensitive broad builds, or the known manager preview/runtime path.
Command snippets inspected#
1find apps -maxdepth 3 \( -name 'wrangler*' -o -name 'open-next.config.*' -o -name 'next.config.*' -o -name 'vite.config.*' -o -name 'package.json' \) | sortConfirmed Cloudflare-relevant config for all requested apps, including apps/www/wrangler.toml, apps/manager/wrangler.toml, and OpenNext/wrangler configs for docs/blog/academy/design-system/ui-library.
1rg -n "cf:|wrangler|opennext|open-next|pages|cloudflare|podman-compose|prod:" package.json .mise.toml apps/*/package.json apps/*/wrangler* apps/*/open-next.config.*Confirmed root wrangler@4.78.0, Pages output directories, OpenNext package usage, and all cf:*/prod:* task definitions in .mise.toml.