MetalCircle

MetalCircle ist eine private, invite-only Community-Plattform rund um Heavy-Metal-Konzerte. Mitglieder verwalten einen Konzertkalender, sehen Konzertdetails, bekunden Teilnahme oder Interesse, kommentieren Konzerte und pflegen Profile. Dazu gehören Fotos, Freundschaften, Direktnachrichten, Patches sowie Web- und Android-App. Automatische Android-Pushs für Anfragen, Nachrichten und Einladungen sind nach Firebase-Backend-Einrichtung aktivierbar. Die Oberfläche unterstützt DE/EN über einen Umschaltbutton.

Der Repository-Name ist historisch noch pingu-concerts. Das ist beabsichtigt und wird hier nicht automatisch umbenannt.

Technologie

  • FastAPI und Uvicorn (Python-Backend)
  • PostgreSQL mit SQL-Schema und versionierten Migrationen
  • Server-renderte HTML-Templates mit Jinja2 sowie CSS und JavaScript
  • Docker Compose für die lokale Web- und Datenbankumgebung
  • Capacitor 6 / Android mit Paket-ID de.pinguholic.concerts
  • Firebase Cloud Messaging für Android-Registrierung und Benachrichtigungen
  • Nominatim für die optionale Venue-Suche und Geocoding-Anreicherung
  • Gitea REST API für den Bugreporter

Repository-Überblick

app/             FastAPI, Templates, Static Assets und Tests
db/init/         Initialschema für eine neue PostgreSQL-Datenbank
db/migrations/   Nachträgliche, reproduzierbare Schemaänderungen
android/         Capacitor-Projekt und Android-App
compose*.yml     Containerdefinitionen und optionale Push-/Pre-Production-Konfiguration
img/             Projektgrafiken

Lokal entwickeln

Voraussetzung sind Docker und Docker Compose. Eine lokale Konfiguration wird aus .env.example erstellt und mit eigenen Entwicklungswerten ergänzt. Danach:

cp .env.example .env
COOKIE_SECURE=false docker compose up --build

Die Anwendung ist anschließend unter http://localhost:8080 erreichbar. Stoppen geht mit docker compose down; Logs zeigt docker compose logs -f web.

Das Schema wird beim Start aus db/init/01_initial.sql angelegt und von den Migrationen bzw. der Startup-Schema-Prüfung ergänzt. Migrationen nie nur manuell in einer Datenbank ausführen.

Konfiguration und Daten

Die erwarteten Variablen stehen in .env.example: PostgreSQL-Zugang, Initial-Admin, COOKIE_SECURE sowie die optionalen Gitea-Werte GITEA_URL, GITEA_TOKEN, GITEA_OWNER und GITEA_REPO. .env, Firebase-google-services.json, private Schlüssel, Datenbank-Dumps und lokale Uploads gehören nicht in Git. Es dürfen ausschließlich lokale Testwerte verwendet werden.

Android

cd android
npm install
npm run sync
npm run build

Die App bleibt unter der Package ID de.pinguholic.concerts. Für einen lokalen Firebase-/Web-Test benötigt das Android-Modul die lokale, ignorierte android/android/app/google-services.json. Diese Datei und ihre Credentials werden nicht veröffentlicht.

Interner Workflow

Änderungen werden in einem Arbeitsbranch geprüft und als nachvollziehbarer Commit nach Review in main übernommen. Gitea Issues dienen als führendes Bug-System; der integrierte Reporter legt Issues über den dedizierten Bot an.

Ausführliche Entwickler-, Architektur-, Deployment- und Betriebsdokumentation befindet sich im Gitea Wiki. Die Wiki-Quellen sind zusätzlich versioniert. Siehe Firebase-Einrichtung, Push-Ablauf, den ChatGPT-Prompt und die konfigurierbaren Alpha-/Beta-/Early-Bird-Stufen.

S
Description
No description provided
Readme 6.1 MiB
Languages
Python 62.2%
HTML 27.7%
CSS 5.3%
JavaScript 3.1%
Java 0.9%
Other 0.7%