Medisync / main.py
anique-1's picture
Secure CORS origins for production
c6d21a3
Raw
History Blame Contribute Delete
2.56 kB
import uvicorn
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.middleware.gzip import GZipMiddleware
from fastapi.staticfiles import StaticFiles
from routers import auth, user, dashboard, medicine, session, analysis
from routers import ai_agent
from routers import preorder, admin, contact, subscription, device, caregiver, health_record, health_detection, cron, chatbot
from utils.reminders import reminder_worker
import asyncio
app = FastAPI(
title="AI-Powered Medicine Dispenser System",
description="Backend API for medicine scheduling, reminders, and user management.",
version="1.0.0"
)
# app.mount("/uploads", StaticFiles(directory="uploads"), name="uploads") # Cloudinary used instead
# CORS middleware
app.add_middleware(
CORSMiddleware,
allow_origins=[
"http://localhost:3000",
"https://app.medisync-ai.site",
"https://medisync-ai.site",
"https://anique-1-medisync.hf.space",
],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# GZip middleware
app.add_middleware(GZipMiddleware, minimum_size=1000)
@app.middleware("http")
async def log_requests(request: Request, call_next):
import sys
print(f"Incoming Request: {request.method} {request.url}")
sys.stdout.flush()
response = await call_next(request)
return response
@app.get("/")
async def root():
return {"message": "MediSync AI API is running", "status": "optimal"}
# Include routers
app.include_router(auth.router)
app.include_router(user.router)
app.include_router(user.public_router)
app.include_router(dashboard.router)
app.include_router(medicine.router)
app.include_router(session.router)
app.include_router(analysis.router)
app.include_router(ai_agent.router)
app.include_router(preorder.router)
app.include_router(admin.router)
app.include_router(contact.router)
app.include_router(subscription.router)
app.include_router(device.router)
app.include_router(caregiver.router)
app.include_router(health_record.router)
app.include_router(health_detection.router)
app.include_router(cron.router)
app.include_router(chatbot.router)
@app.on_event("startup")
async def startup_event():
# Start reminder background tasks
loop = asyncio.get_event_loop()
from utils.reminders import reminder_worker, mark_missed_doses_worker
loop.create_task(reminder_worker())
loop.create_task(mark_missed_doses_worker())
if __name__ == "__main__":
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)