efihub/README.md
Oliver Hofmann 4fbcb99743 Init
2026-04-27 08:33:43 +02:00

46 lines
3.2 KiB
Markdown

# 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