Files
pingu-concerts/README.md
T

62 lines
3.2 KiB
Markdown

# MetalCircle
MetalCircle ist eine private, invite-only Community-Plattform rund um Heavy-Metal-Konzerte. Mitglieder verwalten einen gemeinsamen Konzertkalender, legen Veranstaltungen an, sehen Konzertdetails, bekunden Teilnahme oder Interesse, kommentieren Konzerte und pflegen Profile. Freundes- und Community-Funktionen, Fotos, ein Patch-/Badge-System, Web-App und Android-App gehören zum aktuellen Produkt; Push-Benachrichtigungen sind für Android technisch vorbereitet.
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
```text
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 Lokale Containerdefinitionen
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:
```bash
cp .env.example .env
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
```bash
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](docs/wiki/Home.md). Die Wiki-Seiten liegen hier zusätzlich als versionierbare Vorlage, falls der direkte Wiki-Zugriff nicht verfügbar ist.