3.2 KiB
University Process Hub (UPH)
1. Vision & Goals
Modulares Backend für Fakultätsprozesse. Startpunkt ist ein RSS-Server, erweiterbar um REST-APIs und Websockets für Echtzeit-Kommunikation. Das System dient als Basis für studentische Arbeiten.
2. Tech-Stack
- Framework: FastAPI (Python 3.11+)
- Kommunikation: REST & Websockets (native FastAPI Implementation)
- Datenbank: SQLAlchemy 2.0 (Support für SQLite lokal & MariaDB produktiv)
- Task-Queue: Celery mit Redis als Broker
- Deployment: Docker & Docker Compose
- Proxy: Traefik-ready mit pfadbasiertem Routing (
APP_PREFIX)
3. Architektur-Richtlinien für Claude Code
- Modularität: Jedes Modul (z.B.
rss_feed) liegt inapp/modules/. Es muss ohne tiefgreifende Core-Abhängigkeiten exportierbar sein. - Routing: Nutze
APIRouter. Implementiere eine globale Middleware oder eine Prefix-Logik, die dieAPP_PREFIXUmgebungsvariable nutzt, damit alle Routen (inkl. Websockets) unter Traefik funktionieren. - Database: Zentrale
database.py. Studierende nutzen SQLite, der Server nutzt MariaDB viaDATABASE_URL. - Authentifizierung: Übernimm das Logik-Konzept aus
/Users/oliver/Development/Operations/django-app/authstuff, implementiere es aber als FastAPI-Dependencies (OAuth2/JWT). - Admin-UI: Nutze
sqladminoderfastapi-users, um eine einfache Weboberfläche zur Datenpflege bereitzustellen. - Testing: Schreibe Unit-Tests mit
pytestfür alle Module. Teste auch die Websocket-Kommunikation mitwebsocketsoderhttpx. - Documentation: Nutze FastAPI's automatische Dokumentation (Swagger UI) und ergänze sie mit ausführlichen Docstrings. Erstelle zusätzlich ein
docs/Verzeichnis für weiterführende Spezifikationen und Anleitungen. - Code-Style: Halte dich an PEP 8. Nutze
blackfür automatisches Formatting undflake8für Linting. Vermeide komplexe Funktionen (>20 Zeilen) und setze auf klare, sprechende Namen. - UX: Orientiere Dich bei der Visualisierung am Vorläufer, zu erreichen unter
https://medinf.efi.th-nuernberg.de/app/. Ersetze aber Bootstrap durch Tailwind CSS für eine modernere und flexiblere Gestaltung. Alle UI-Komponenten sollten responsive sein und auf verschiedenen Bildschirmgrößen gut funktionieren.
4. Struktur
. ├── app/ │ ├── init.py │ ├── main.py # App-Entrypoint & FastAPI Initialisierung │ ├── core/ # Übergreifende Logik │ │ ├── config.py # APP_PREFIX, DB_URL, Secrets │ │ ├── database.py # SQLAlchemy Engine & Session │ │ └── auth.py # JWT & Berechtigungen (ex-Django Logik) │ ├── modules/ # Abgeschlossene Module (für Studierende) │ │ └── rss_feed/ # Das erste Modul │ │ ├── router.py │ │ ├── service.py │ │ └── models.py │ ├── schemas/ # Pydantic Models (REST/WS Validierung) │ └── worker/ # Celery Tasks & Scheduler ├── legacy_django/ # Referenzcode (nicht aktiv) ├── docker/ │ ├── Dockerfile │ └── docker-compose.yml ├── requirements.txt └── .env.example