"""Точка входа FastAPI: health + OAuth-флоу gnexus-gauth + защищённое /api."""
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from starlette.middleware.sessions import SessionMiddleware
from app.api import projects, tags, tasks
from app.auth.routes import router as auth_router
from app.config import get_settings
app = FastAPI(title="gntodo API", version="0.1.0")
# CORS: в разработке — vite dev server; в проде фронт отдаётся тем же origin через nginx.
settings = get_settings()
app.add_middleware(
CORSMiddleware,
allow_origins=["http://localhost:15134"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Сессия — подписанная cookie (HttpOnly); секрет из окружения.
app.add_middleware(SessionMiddleware, secret_key=settings.session_secret)
app.include_router(auth_router)
app.include_router(tasks.router)
app.include_router(projects.router)
app.include_router(tags.router)
@app.get("/api/health")
async def health() -> dict[str, str]:
return {"status": "ok"}