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>
16 lines
548 B
Python
16 lines
548 B
Python
from django.db import connection
|
|
from django.http import HttpResponse
|
|
|
|
|
|
class HealthCheckMiddleware:
|
|
"""Answer /healthz before host validation, so Fly's checks pass whatever Host they send."""
|
|
|
|
def __init__(self, get_response):
|
|
self.get_response = get_response
|
|
|
|
def __call__(self, request):
|
|
if request.path == "/healthz":
|
|
with connection.cursor() as cursor:
|
|
cursor.execute("SELECT 1")
|
|
return HttpResponse("ok", content_type="text/plain")
|
|
return self.get_response(request)
|