# Architecture ```mermaid flowchart TD Browser[Web Browser] --> FastAPI[FastAPI / Uvicorn] Android[Capacitor Android] --> FastAPI FastAPI --> PostgreSQL[(PostgreSQL)] FastAPI --> Uploads[Docker Volumes: Uploads] FastAPI --> External[Nominatim / externe Dienste] FastAPI --> Gitea[Gitea REST API] FastAPI --> Worker[Push-Worker / DB-Warteschlange] Worker --> FCM Android --> FCM[Firebase Cloud Messaging] ``` Das Backend in `app/main.py` rendert Jinja2-Templates und liefert CSS und JavaScript aus `app/static`. Authentifizierung basiert auf serverseitigen Sessions; der Browser bzw. die Android-WebView spricht ausschließlich mit MetalCircle. PostgreSQL enthält Benutzer, Veranstaltungen, Venues, Community-Daten, Diary, Patches und Push-Geräte. Dateien werden in den Compose-Volumes `concert_uploads` und `private_uploads` gehalten. Die Android-App ist ein Capacitor-Wrapper derselben Webanwendung. Ein optionaler Worker im FastAPI-Prozess sendet FCM-Nachrichten aus einer PostgreSQL-Warteschlange. Bis zur Zugangseinrichtung ist er standardmäßig deaktiviert. Der Bugreporter ist die einzige Backend-Komponente mit Gitea-Zugriff.