docker.dateiverwaltung/backend/app/main.py
data 21e1ffe9e2 Version 1.1: Dateimanager mit 3-Panel Layout
Neue Features:
- 3-Panel Dateimanager (Ordnerbaum, Dateiliste, Vorschau)
- Separates Vorschau-Fenster für zweiten Monitor
- Resize-Handles für flexible Panel-Größen (horizontal & vertikal)
- Vorschau-Panel ausblendbar wenn externes Fenster aktiv
- Natürliche Sortierung (Sonderzeichen → Zahlen → Buchstaben)
- PDF-Vorschau mit Fit-to-Page
- Email-Attachment Abruf erweitert

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 12:51:40 +01:00

74 lines
1.9 KiB
Python

"""
Dateiverwaltung - Modulares Dokumenten-Management-System
Hauptanwendung mit FastAPI
"""
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from fastapi.responses import HTMLResponse
from fastapi import Request
from pathlib import Path
import logging
from .models import init_db
from .routes.api import router as api_router
from .config import BASE_DIR
# Logging konfigurieren
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
# App erstellen
app = FastAPI(
title="Dateiverwaltung",
description="Modulares Dokumenten-Management-System",
version="1.0.0"
)
# Statische Dateien
frontend_dir = BASE_DIR / "frontend"
app.mount("/static", StaticFiles(directory=frontend_dir / "static"), name="static")
# Templates
templates = Jinja2Templates(directory=frontend_dir / "templates")
# API Router
app.include_router(api_router)
@app.on_event("startup")
async def startup():
"""Initialisierung beim Start"""
init_db()
logging.info("Datenbank initialisiert")
@app.get("/", response_class=HTMLResponse)
async def index(request: Request):
"""Hauptseite"""
return templates.TemplateResponse("index.html", {"request": request})
@app.get("/browser", response_class=HTMLResponse)
async def browser(request: Request):
"""Dateimanager / Dual-Pane Browser"""
return templates.TemplateResponse("browser.html", {"request": request})
@app.get("/browser/preview", response_class=HTMLResponse)
async def browser_preview(request: Request):
"""Separates Vorschau-Fenster für Dateimanager"""
return templates.TemplateResponse("preview.html", {"request": request})
@app.get("/health")
async def health():
"""Health Check für Docker"""
return {"status": "ok"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)