Django 5.2 with dev/test/prod settings, SQLite tuned for Litestream (WAL, IMMEDIATE transactions), ULID primary keys via a shared base model, and a custom User model ahead of the first migration. Minimal accessible base template with dark mode via color-scheme and an optional theme picker. /healthz answers before host validation so Fly checks pass. Dockerfile (dev and prod targets), compose for local dev, fly.toml with placeholder app/region, Litestream backups to B2, and a Forgejo Actions workflow. Migrations run in bin/start because Fly release machines don't mount volumes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 lines
761 B
TOML
34 lines
761 B
TOML
# App name and region are placeholders until the Fly app is created.
|
|
app = "intent-CHANGEME"
|
|
primary_region = "CHANGEME"
|
|
|
|
[build]
|
|
build-target = "prod"
|
|
|
|
[env]
|
|
DJANGO_SETTINGS_MODULE = "config.settings.prod"
|
|
DJANGO_ALLOWED_HOSTS = "intent-CHANGEME.fly.dev"
|
|
INTENT_DATA_DIR = "/data"
|
|
|
|
# One machine, one volume: SQLite lives here and Litestream replicates it to B2.
|
|
[mounts]
|
|
source = "intent_data"
|
|
destination = "/data"
|
|
|
|
[http_service]
|
|
internal_port = 8000
|
|
force_https = true
|
|
auto_stop_machines = "stop"
|
|
auto_start_machines = true
|
|
min_machines_running = 0
|
|
|
|
[[http_service.checks]]
|
|
method = "GET"
|
|
path = "/healthz"
|
|
interval = "30s"
|
|
timeout = "5s"
|
|
grace_period = "20s"
|
|
|
|
[[vm]]
|
|
size = "shared-cpu-1x"
|
|
memory = "512mb"
|