Files
smart-city-digital-twin-mar…/smart-app-city/backend/app/main.py

51 lines
1.5 KiB
Python

"""
Smart App City — Main Application
FastAPI backend avec JWT, IoT, GIS, Notifications, Reporting
"""
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.config import settings
from app.database import init_db, close_db
from app.routes.auth import router as auth_router
from app.routes.iot import router as iot_router
from app.routes.gis import router as gis_router
from app.routes.notifications import router as notifications_router
from app.routes.reporting import router as reporting_router
@asynccontextmanager
async def lifespan(app: FastAPI):
"""Startup and shutdown events."""
await init_db()
yield
await close_db()
app = FastAPI(
title="Smart App City",
description="Backend API pour l'application mobile Smart City Digital Twin Martinique",
version="0.1.0",
lifespan=lifespan,
)
# CORS
app.add_middleware(
CORSMiddleware,
allow_origins=settings.CORS_ORIGINS,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Routes
app.include_router(auth_router, prefix="/api/v1")
app.include_router(iot_router, prefix="/api/v1")
app.include_router(gis_router, prefix="/api/v1")
app.include_router(notifications_router, prefix="/api/v1")
app.include_router(reporting_router, prefix="/api/v1")
@app.get("/health", tags=["health"])
async def health_check():
"""Health check endpoint."""
return {"status": "healthy", "version": "0.1.0"}