feat(frontend): T44 setup FastAPI static files and templates

- Mount static files on /static endpoint
- Configure Jinja2Templates with directory structure
- Create base template with Pico.css, HTMX, Chart.js
- Create all template subdirectories (auth, dashboard, keys, tokens, profile, components)
- Create initial CSS and JS files
- Add tests for static files and templates configuration

Tests: 12 passing
Coverage: 100% on new configuration code
This commit is contained in:
Luca Sacchi Ricciardi
2026-04-07 17:58:03 +02:00
parent 3ae5d736ce
commit c1f47c897f
16 changed files with 1592 additions and 4 deletions

View File

@@ -3,9 +3,12 @@
Main application entry point for OpenRouter API Key Monitor.
"""
from contextlib import asynccontextmanager
from pathlib import Path
from fastapi import FastAPI
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from openrouter_monitor.config import get_settings
from openrouter_monitor.routers import api_keys
@@ -32,6 +35,12 @@ async def lifespan(app: FastAPI):
shutdown_scheduler()
# Get project root directory
PROJECT_ROOT = Path(__file__).parent.parent.parent
# Configure Jinja2 templates
templates = Jinja2Templates(directory=str(PROJECT_ROOT / "templates"))
# Create FastAPI app
app = FastAPI(
title="OpenRouter API Key Monitor",
@@ -41,6 +50,9 @@ app = FastAPI(
lifespan=lifespan,
)
# Mount static files
app.mount("/static", StaticFiles(directory=str(PROJECT_ROOT / "static")), name="static")
# CORS middleware
app.add_middleware(
CORSMiddleware,