Add skeleton: config, migrations, startup sweep, two listeners

Step 1 of the build order in docs/decisions.md. Boots, applies migrations
before serving, and serves a health check and an empty admin page.

- 001_init.sql is the full schema from docs/spec.md, including the check
  constraints and indexes the old app lacked
- The startup sweep fails submissions left mid-conversion by a restart; an
  in-process goroutine dies with the process and those rows would otherwise
  say converting forever
- Admin is Basic Auth from env on its own listener, fatal at startup when
  ADMIN_PASSWORD is unset
This commit is contained in:
Esa Kataja
2026-07-31 19:41:01 +03:00
parent 2474b42175
commit 80f82a82de
11 changed files with 542 additions and 3 deletions
+7
View File
@@ -0,0 +1,7 @@
# Copy to .env and edit. Neither password has a default.
POSTGRES_PASSWORD=
ADMIN_USER=admin
ADMIN_PASSWORD=
# Set to false only for local development over plain HTTP.
SECURE_COOKIES=true