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