Management UI
CI / ci (push) Canceled after 0s

Attempt 2 of a management ui.
This commit is contained in:
Stefan Lazic committed 2026-09-05 13:39:55 +01:00
1 parent 9fe5b4f038
commit a0d39026c0
54 files changed
+8804 -267

No files matched your search

+14 -15
View File
@@ -1,10 +1,11 @@
# One business's config on the shared multi-business VPS setup — see
# docker-compose.infra.yaml for the one-time setup this depends on
# stacks/infra/compose.yaml for the one-time setup this depends on
# (creating this business's database on the shared MySQL server) and
# docker-compose.<business>.yaml for how this file is used. Copy this to
# `.env.business.<slug>` (e.g. `.env.business.blake-heritage` — kept out
# of git, see .gitignore) per business and fill in real values. Nothing
# here is a real credential.
# stacks/<slug>/compose.yaml for how this file is used. Copy this to
# `stacks/<slug>/.env` (e.g. `stacks/blake-heritage/.env` — kept out of
# git, see .gitignore) per business and fill in real values. Nothing here
# is a real credential. Normally the management UI (manager/) generates
# this file for you — this template is for the by-hand setup path.
#
# The app starts and runs a complete first-install flow with ONLY the
# "Required for basic startup" section below filled in — every other
@@ -12,17 +13,16 @@
# disabled state rather than crashing when its variables are left blank.
# ── Required for basic startup ─────────────────────────────────────────
# The public domain this business is served on — used by Traefik's
# routing label (see docker-compose.<business>.yaml) to decide which
# container handles requests for it, so this must be set and must match
# the domain's real DNS (pointed at the VPS) before Traefik can issue a
# The public domain this business is served on — must match the .caddy
# site file's own domain (see stacks/infra/sites/.gitkeep) and that
# domain's real DNS (pointed at the VPS) before Caddy can issue a
# certificate for it.
DOMAIN="blake-heritage.example.com"
# The app reaches MySQL via the shared infra's service hostname
# `next-chair-mysql`, never `localhost` — see docker-compose.infra.yaml.
# `next-chair-mysql`, never `localhost` — see stacks/infra/compose.yaml.
# DATABASE_NAME/USER/PASSWORD must match exactly what you created for
# this business on the shared server (see docker-compose.infra.yaml's
# this business on the shared server (see stacks/infra/compose.yaml's
# "CREATE DATABASE ..." step) — this file doesn't create them, it only
# tells the app what to connect as.
DATABASE_HOST="next-chair-mysql"
@@ -44,10 +44,9 @@ INSTALLATION_TOKEN="replace-me"
CRON_SECRET="replace-me"
# ── Super Administrator (optional — see scripts/ensure-super-admin.ts) ──
# Platform-level account with every Owner permission. Not run
# automatically by this compose file (that's a Docker-entrypoint-only
# behaviour, see docker/entrypoint.sh) — run it manually, once, the same
# way migrations were run for the Vercel/Hostinger deployment earlier:
# Platform-level account with every Owner permission for THIS business.
# Not run automatically by this compose file (that's a Docker-entrypoint-
# only behaviour, see docker/entrypoint.sh) — run it manually, once:
# docker exec -it next-chair-blake-heritage npx tsx scripts/ensure-super-admin.ts
# Leave SUPER_ADMIN_EMAIL blank to skip entirely and use the /install
# wizard's own administrator account instead.