46 lines
3.2 KiB
Markdown
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 |