This commit is contained in:
Redsandy
2026-03-14 18:48:57 +03:00
parent 1d1350fc13
commit 3ea4fb4771
40 changed files with 2150 additions and 0 deletions

57
app/main.py Normal file
View File

@@ -0,0 +1,57 @@
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.config import CORS_ORIGINS, DEBUG
from app.database import create_db_and_tables
# Import all models so SQLModel registers them
from app.models import (
User,
Activity,
Zone,
ZoneHistory,
Friendship,
Score,
Notification,
) # noqa: F401
from app.routers import auth, users, activities, zones, friends, leaderboard
@asynccontextmanager
async def lifespan(app: FastAPI):
"""Startup: create tables. Shutdown: nothing special yet."""
create_db_and_tables()
yield
app = FastAPI(
title="GeoZoner API",
version="0.1.0",
description="Territorial fitness tracker backend",
lifespan=lifespan,
)
# --- CORS ---
app.add_middleware(
CORSMiddleware,
allow_origins=CORS_ORIGINS,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# --- Routers ---
app.include_router(auth.router)
app.include_router(users.router)
app.include_router(activities.router)
app.include_router(zones.router)
app.include_router(friends.router)
app.include_router(leaderboard.router)
@app.get("/health")
def health():
return {"status": "ok"}