# 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 in `app/modules/`. Es muss ohne tiefgreifende Core-Abhängigkeiten exportierbar sein. * **Routing:** Nutze `APIRouter`. Implementiere eine globale Middleware oder eine Prefix-Logik, die die `APP_PREFIX` Umgebungsvariable nutzt, damit alle Routen (inkl. Websockets) unter Traefik funktionieren. * **Database:** Zentrale `database.py`. Studierende nutzen SQLite, der Server nutzt MariaDB via `DATABASE_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 `sqladmin` oder `fastapi-users`, um eine einfache Weboberfläche zur Datenpflege bereitzustellen. * **Testing:** Schreibe Unit-Tests mit `pytest` für alle Module. Teste auch die Websocket-Kommunikation mit `websockets` oder `httpx`. * **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 `black` für automatisches Formatting und `flake8` fü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