ClariDoc / main.py
Kshitijk20's picture
code push
e5b884f
from fastapi import FastAPI, HTTPException, Depends, UploadFile, File, Form
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse
import uvicorn
import os
import tempfile
from typing import Optional
import uuid
from datetime import datetime
from app.api.v1.routes import router as api_router
from app.core.session_manager import session_manager
from app.config.config import get_settings
# Initialize FastAPI app
app = FastAPI(
title="ClariDoc API",
description="Professional Document Analysis & RAG Platform API",
version="1.0.0"
)
# Add CORS middleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Configure this properly for production
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.on_event("startup")
async def startup_event():
"""Initialize database and other startup tasks"""
try:
# Test database connection
session_manager.db.init_db()
print("Database connection verified successfully")
except Exception as e:
print(f"Warning: Database initialization failed: {e}")
# Include API routes
app.include_router(api_router, prefix="/api/v1")
@app.get("/")
async def root():
return {
"message": "ClariDoc API",
"status": "running",
"description": "Professional Document Analysis & RAG Platform"
}
@app.get("/health")
async def health_check():
"""Health check endpoint for Docker and monitoring"""
try:
# Test database connection
session_manager.db.init_db()
db_status = "healthy"
except Exception:
db_status = "unhealthy"
return {
"status": "healthy",
"service": "ClariDoc FastAPI Backend",
"database": db_status,
"timestamp": datetime.now()
}
if __name__ == "__main__":
uvicorn.run(
"app.main:app",
host="0.0.0.0",
port=int(os.getenv("PORT", 8000)),
reload=False, # Disable reload in production
log_level="info"
)