Initial income_calculator project
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
50
backend/main.py
Normal file
50
backend/main.py
Normal file
@@ -0,0 +1,50 @@
|
||||
from pathlib import Path
|
||||
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
|
||||
from backend.api import accounts, balance, banks, charts, import_api, settings_api
|
||||
from backend.db.database import init_db
|
||||
|
||||
init_db()
|
||||
|
||||
app = FastAPI(title="Income Calculator", version="0.1.0")
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"],
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
app.include_router(banks.router)
|
||||
app.include_router(accounts.router)
|
||||
app.include_router(import_api.router)
|
||||
app.include_router(balance.router)
|
||||
app.include_router(charts.router)
|
||||
app.include_router(settings_api.router)
|
||||
|
||||
# Статика Vue (собранная в frontend/dist)
|
||||
static_path = Path(__file__).resolve().parent.parent / "frontend" / "dist"
|
||||
if static_path.exists():
|
||||
app.mount("/assets", StaticFiles(directory=static_path / "assets"), name="assets")
|
||||
|
||||
@app.get("/")
|
||||
def index():
|
||||
from fastapi.responses import FileResponse
|
||||
return FileResponse(static_path / "index.html")
|
||||
|
||||
@app.get("/{full_path:path}")
|
||||
def serve_spa(full_path: str):
|
||||
from fastapi.responses import FileResponse
|
||||
if full_path.startswith("api/"):
|
||||
return FileResponse(static_path / "index.html") # let API handle; this won't be hit
|
||||
f = static_path / full_path
|
||||
if f.is_file():
|
||||
return FileResponse(f)
|
||||
return FileResponse(static_path / "index.html")
|
||||
else:
|
||||
@app.get("/")
|
||||
def root():
|
||||
return {"message": "Backend running. Build frontend: cd frontend && npm run build"}
|
||||
Reference in New Issue
Block a user