Spaces:
Running
Running
File size: 2,277 Bytes
bf04727 7004388 8aba1e2 a304e30 9a86182 bf04727 57f6343 bf04727 57f6343 bf04727 7004388 8aba1e2 a304e30 9a86182 bf04727 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | """
FastAPI application entry point for InnerVoice backend.
"""
import os
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from dotenv import load_dotenv
load_dotenv()
from models.database import init_db
from routes.analyze import router as analyze_router
from routes.entries import router as entries_router
from routes.trends import router as trends_router
from routes.alerts import router as alerts_router
from routes.chat import router as chat_router
from routes.auth import router as auth_router
from routes.weekly_report import router as weekly_report_router
from routes.prompts import router as prompts_router
from routes.trusted_circle import router as trusted_circle_router
app = FastAPI(
title="InnerVoice API",
description="AI-powered emotional wellness tracker backend",
version="1.0.0",
)
# CORS
origins = os.getenv("CORS_ORIGINS", "http://localhost:3000").split(",")
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Init DB & Preload Models on startup
@app.on_event("startup")
def startup():
init_db()
print("[InnerVoice] Database initialized.")
# Pre-load AI models to prevent latency during the first user request
from services.text_emotion import _load_model as load_text_model
from services.emotion_analyzer import _load_model as load_audio_model
from services.transcriber import _load_model as load_whisper
print("[InnerVoice] Preloading AI models (Wav2Vec2, RoBERTa, Whisper)...")
load_text_model()
load_audio_model()
load_whisper()
print("[InnerVoice] All models loaded and cached!")
# Register routers
app.include_router(analyze_router, prefix="/api")
app.include_router(entries_router, prefix="/api")
app.include_router(trends_router, prefix="/api")
app.include_router(alerts_router, prefix="/api")
app.include_router(chat_router, prefix="/api")
app.include_router(auth_router, prefix="/api")
app.include_router(weekly_report_router, prefix="/api")
app.include_router(prompts_router, prefix="/api")
app.include_router(trusted_circle_router, prefix="/api")
@app.get("/api/health")
def health():
return {"status": "ok", "service": "InnerVoice API"}
|