refactor: extract main.py into focused modules (#890)
main.py was a 372-line monolith mixing middleware, observability config,
user-agent parsing, and endpoint definitions with app wiring. Now it's
138 lines of pure orchestration — imports, lifespan, and wiring.
- utilities/middleware.py: SecurityHeadersMiddleware
- utilities/observability.py: logfire setup, UA parsing, span enrichment
- api/meta.py: health, config, OAuth metadata, JWKS, robots, sitemap
- __main__.py: `python -m backend` convenience runner
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
authored by
zzstoatzz.io