TuS Cremlingen · Digital Fan Experience

StickerSpaß T.R.A.

Team Rally Album

Ein digitales Panini-Sammelalbum für den Vereinsfußball. Eltern und Kinder sammeln Fotos der Spieler, Trainer und Betreuer ihrer Mannschaft — direkt auf dem Smartphone, ohne Cloud, ohne Datenweitergabe.

Flutter · Android & iOS Flask REST-API · Python DSGVO-konform by Design
🏟️ Du bist Vereinsadmin?  Hier findest du alle Download-Links und die Installationsanleitung für den TeamRally-Server. ZUM INSTALL-GUIDE ↓

Wie es funktioniert

🏟️
Verein pflegt den Server
Anonyme Teamdaten: Rollen, Termine, Mannschaftsstruktur. Keine Namen, keine Fotos. Datenschutz strukturell verankert.
📱
App läuft offline
Kinder und Eltern tragen selbst Namen und Fotos ein. Alles bleibt lokal auf dem Gerät. Sync nur für Teamstruktur & Termine.
🔄
Sticker tauschen
Beim Training oder Spiel können Sticker zwischen zwei Handys getauscht werden — per WiFi-Direct, QR-Code oder WhatsApp-Share.

System-Übersicht

VPS-Server
Flask REST-API
Port 5000
SQLite · Docker
Nur anonyme Daten
⟵ REST ⟶ Sync
Flutter App
Android · iOS
sqflite lokal
Offline-first
Namen + Fotos privat
⟵ P2P ⟶ WiFi-Direct / QR
2. Smartphone
Sticker-Tausch
Direkt · kein Server
Kein Internet nötig

Features

Album-Ansicht — Vollbild-Sticker pro Spieler/Trainer/Betreuer mit Foto, Name, Rolle
Foto-Galerie pro Slot — mehrere Fotos sammelbar, Favorit wählbar (~100 KB/Team)
Sticker-Tausch P2P — WiFi-Direct, QR-Code oder Share via WhatsApp / AirDrop
Team-Editor — dfbnet-CSV → .trk-Datei → Import; manuelle Slot-Verwaltung
Termine-Ansicht — Heim/Auswärts-Badge, vergangene & kommende Spiele
Favoriten-Teams — Schnellzugriff auf bevorzugte Mannschaften
Bundle-Modus — AES-256-GCM verschlüsselt, PIN-gesichert, ohne Live-Server
In-App-Update — APK-Update mit SHA-Integritätsprüfung direkt aus der App
Geburtstags-Benachrichtigungen — lokale Reminder für Spieler-Geburtstage
Daten-Doktor — Diagnose & Reparatur der lokalen Datenbank
Vereinshymne — Play/Pause per Tap auf Club-Header
21 Mannschaften — alle TuS Cremlingen Teams in einem Album

DSGVO by Design

🖥 Server kennt
  • Vereinsname & Teamstruktur
  • Anonyme Rollen (Torwart, Trainer …)
  • Spieltermine & Orte
  • Kein Personenbezug
📱 Nur lokal auf dem Gerät
  • Spielernamen
  • Fotos & Bilder
  • Geburtstage
  • Tausch-Daten (temporär, P2P)

Technologien

Server
Python 3.12 Flask 3.0 SQLite Gunicorn Docker
Mobile App
Flutter 3.x Dart sqflite http
P2P & Sharing
WiFi-Direct QR flutter share_plus image_picker
Sicherheit
AES-256-GCM SHA-256 cryptography

Status

Flask REST-API mit allen Endpunkten
Flutter App: HomeScreen, Team-Detail, Einstellungen
Offline-First mit lokalem SQLite
Foto-Galerie pro Slot (mehrere Fotos, Favorit)
P2P Sticker-Tausch — QR / WiFi-Direct / Share
AlbumPager — Vollbild-Sticker-Ansicht
Team-Editor (dfbnet CSV → .trk → Import)
Bundle-Modus (AES-256-GCM, statischer Webserver)
In-App-APK-Update mit SHA-Integritätsprüfung
Geburtstags-Benachrichtigungen & Favoriten
Saisonwechsel-Flow — UI in Arbeit
iOS-Build (Mac erforderlich)
Release-APK mit Keystore signieren

Server herunterladen & installieren

Situation Empfehlung
App soll dauerhaft über Internet erreichbar sein Option A — VPS
Erst ausprobieren, bevor ich Geld ausgebe Option B — WSL
Ich habe einen Raspberry Pi / alten Linux-PC Option C — Linux
Nur im Vereins-WLAN, kein Internet nötig Option B oder C
OPTION A VPS — empfohlen für den Vereinsbetrieb

Gemieteter Linux-Rechner im Internet. Läuft rund um die Uhr, von überall erreichbar — auch per Mobilfunk. Kosten: ca. 3–5 € / Monat.

Anbieter Paket Website
Hetzner CX22, 3,79 €/Monat hetzner.com
Netcup VPS 200 G11, ~2,99 €/Monat netcup.de
Contabo VPS S, ~5,99 €/Monat contabo.com
VPS bestellen — Betriebssystem: Ubuntu 22.04 LTS, kleinste Größe reicht
Per E-Mail erhältst du IP-Adresse, Benutzer (root) und Passwort
SSH-Verbindung: Windows PowerShell → ssh root@<IP> → Passwort eingeben
Installer ausführen (im SSH-Fenster):
curl -fsSL http://46.224.96.208/download/TeamRally-server/install.sh | bash
Port freischalten: Kundenpanel › Firewall / Security Group › TCP Port 5000 von überall erlauben
Browser: http://<IP>:5000/admin/ öffnen → Einrichtungsassistent
OPTION B WSL auf Windows — Testbetrieb
ℹ Server läuft nur, solange der PC aktiv und im WLAN ist. Für dauerhaften Vereinsbetrieb Option A wählen.

WSL INSTALLIEREN (EINMALIG)

Start → Rechtsklick auf Windows PowerShellAls Administrator ausführen
Eingeben:
wsl --install
PC neu starten — danach öffnet sich Ubuntu automatisch, Benutzername & Passwort vergeben

TEAMRALLY SERVER INSTALLIEREN

Im Ubuntu-Fenster:

curl -fsSL http://46.224.96.208/download/TeamRally-server/install.sh | bash

SMARTPHONE VERBINDEN (GLEICHES WLAN)

Windows-IP ermitteln — PowerShell: ipconfig → Wert bei WLAN › IPv4-Adresse (z. B. 192.168.1.58)
Port-Weiterleitung setzen — PowerShell als Administrator:
# WSL-IP ermitteln
wsl hostname -I

# Weiterleitung setzen (<WSL-IP> durch Ausgabe oben ersetzen)
netsh interface portproxy add v4tov4 listenaddress=192.168.1.58 listenport=5000 connectaddress=<WSL-IP> connectport=5000
Windows-Firewall: Port 5000 öffnen — PowerShell als Administrator:
netsh advfirewall firewall add rule name="TeamRally" dir=in action=allow protocol=TCP localport=5000
In der App als Server-URL eintragen: http://192.168.1.58:5000
Hinweis: Die WSL-IP ändert sich nach jedem PC-Neustart. Die Port-Weiterleitung muss dann neu gesetzt werden.
OPTION C Bestehendes Linux

Raspberry Pi, alter Laptop, NAS oder Heimserver — wenn Linux bereits läuft:

curl -fsSL http://46.224.96.208/download/TeamRally-server/install.sh | bash

Der Installer erkennt dein System automatisch und installiert fehlende Pakete nach.

Sicherheitsschlüssel werden automatisch generiert
Port und Datenpfad abfragen (Enter = Standardwert übernehmen)
BOOTSTRAP-SECRET wird einmalig im Terminal angezeigt — notieren oder Screenshot machen!
Browser öffnen: http://<Server-IP>:5000/admin/
Formular ausfüllen → Bootstrap-Secret eingeben → Admin-Passwort vergeben → fertig
⚠ Das BOOTSTRAP-SECRET wird nach dem ersten Login dauerhaft gesperrt. Danach nur noch per SSH in der .env-Datei einsehbar.

Einfach den Installer erneut ausführen — bestehende Daten (Datenbank, Konfiguration) bleiben erhalten:

cd TeamRally-server
curl -fsSL http://46.224.96.208/download/TeamRally-server/install.sh | bash
🖥 Admin-Panel öffnen ⌥ GitHub (Private) ← Mission Control