Shuffle/requirements/10-anforderungen.md
cschlaefke 317634dac5
Some checks are pending
CI / flutter (push) Waiting to run
CI / supabase (push) Waiting to run
CI / supabase-tests (push) Waiting to run
chore: initial project kit
2026-11-02 12:14:09 +01:00

18 KiB
Raw Blame History

Shuffle – Anforderungen (Entwurf)

2026-11-01 · Chris

Entwurf zur Abstimmung: Deine 18 Punkte als 12 Epics mit Story-Titeln, einem Vorschlag für den Release-Schnitt und den Fragen, die vor der Architektur geklärt werden müssen. Akzeptanzkriterien schreiben wir erst für die Epics, die in den ersten Release kommen.

Entscheidungen (Stand 2. November 2026)

Die Grundsatzfragen F1 bis F7, drei Detailfragen für R1 und der Release-Schnitt sind entschieden. Die Tabelle ist die Grundlage für die Architektur; weiter unten betreffen nur noch Detailfragen die einzelnen Stories.

Nr Entscheidung Folge
F1 Markt und Sprachen: DACH, Deutsch und Englisch ab Start Postleitzahlen für Deutschland, Österreich und Schweiz; zweisprachige Oberfläche von Anfang an
F2 Katalog: BGG-Lizenz beantragen, den Katalog aber BGG-unabhängig bauen Eigene Spiel-IDs, die BGG-Kennung nur als Zusatzfeld; ohne Lizenz läuft die App weiter. Laut BGG-Bedingungen und Nutzungsleitfaden ist die Lizenz für kommerzielle Apps nötig, „Powered by BGG“ ist Pflicht, Anfragen laufen über den Server mit Zwischenspeicher
F3 Offline: nur das Erfassen von Partien Lokale Speicherung und Abgleich nur für Partien
F4 Premium: zunächst keine Premium-Funktionen, gegebenenfalls eine Spendenmöglichkeit KI-Erkennung und Epic PRE sind zurückgestellt; laut BGG-Leitfaden braucht auch eine reine Spenden-App eine kommerzielle Lizenz, die vermutlich kostenlos ist
F5 Standort: Stadt ist für andere sichtbar Stadt wird aus der PLZ abgeleitet und angezeigt, die PLZ selbst bleibt verborgen. Ob Nutzer die Stadtangabe abschalten können, regelt KTO-04
F6 Händler und Vereine: manuelle Prüfung durch dich, kostenlos Freigabe-Ablauf im Admin-Bereich (QUE-08)
F7 Plattformen: Mobile zuerst, Web mit demselben Kern Eine Codebasis, alle Kernfunktionen auch im Web
F8 Mindestalter: ab 16 Altersbestätigung bei der Registrierung (KTO-01); rechtliche Prüfung vor dem Start
F9 BGG-Sync: nur Import, manuell auslösbar Kein Zurückschreiben, keine automatischen Hintergrundabrufe (SAM-07 bis SAM-09)
F11 Partien: Gäste ohne Konto möglich, verknüpfte Nutzer müssen bestätigen In R1 nur Gäste mit Namen; Verknüpfung und Bestätigung kommen mit R2 (PAR-02)
S1 BGG-Import bleibt in R1, wird aber als Letztes gebaut Kommt die Lizenz nicht rechtzeitig, startet R1 ohne Import und er wird nachgeliefert
S2 KI-Erkennung aus Fotos ist zurückgestellt, bis die Finanzierung geklärt ist SAM-10 und Epic PRE ruhen vorerst
S3 Reihenfolge: erst Gruppen (R2), dann Community (R3) Gruppen liefern echte Nutzung am Spieltisch, bevor Shelfies und Reviews Inhalte brauchen
F18 Startseite: persönliches Dashboard bis R3, News-Seite ab R4 Dashboard zeigt zuletzt gespielt, Wunschliste, nächste Termine

Aufgabe für dich: BGG-Anwendung registrieren und die Lizenz beantragen, damit die Antwort da ist, wenn R1 fertig wird.

Epics im Überblick

Zwölf Epics tragen deine 18 Punkte; Katalog, Premium und Querschnitt folgen aus deiner Liste, stehen aber nicht ausdrücklich darin. Die Spalte „Release“ ist mein Vorschlag (Begründung im nächsten Abschnitt), R1 bis R4 stehen für die vier Ausbaustufen.

Kürzel Epic Aus deiner Liste Release
KTO Konto & Profil Konto je Nutzer, Händler, Verein; Profil wie bei Steam mit Lieblingsspielen; BGG-, BGA-, Steam-, Discord-Name und Link; Wohnort per PLZ R1 Basis, R3 Profil, R4 Händler und Vereine
KAT Spielekatalog abgeleitet: Stammdaten aller Spiele, Grundlage für Sammlung, Partien, Reviews und Zubehör R1
SAM Sammlung & Listen Pflege der Spielesammlung, Einkaufs- und Wunschliste, Sync mit BGG, KI-Erkennung aus Fotos R1, KI-Erkennung zurückgestellt
PAR Partien & Statistik Tracking gespielter Partien, Analyse des Spielverhaltens, Spielerranking R1 Tracking und Statistik, R3 Ranking
GRP Gruppen & Treffs Spielegruppen, Spieltreffs, Mitspielersuche im Umkreis, Spielabstimmung, Terminplanung R2
COM Community Shelfies, Reviews von Spielen auch anderer Nutzer R3
NEW News News-Seite als Startseite für Feeds und Händler R4
EVT Events Kalender mit Turnieren und Treffen in der Nähe, von Händlern und Vereinen einstellbar R4
KSG Crowdfunding Kickstarter- und Gamefound-Liste mit Watchlist, gebackten Spielen, Status flexibel, früh möglich
ZUB Zubehör Sleeves je Spiel, 3D-Prints für Inserts später, erst Datenquelle klären
PRE Premium Premium-Funktion der KI-Erkennung, Abo und Freischaltung zurückgestellt, vorerst höchstens eine Spendenfunktion
QUE Querschnitt abgeleitet: Benachrichtigungen, Melden und Moderation, Datenschutz, Rollen und Rechte laufend ab R1

Vorschlag für den Release-Schnitt

Ich würde mit dem starten, was ein Nutzer allein verwenden kann, und die Community-Funktionen danach aufsetzen, weil sie erst mit vielen Nutzern Wert haben. Das ist ein Vorschlag, die Entscheidung liegt bei dir.

  1. R1 Solo-Nutzen: Konto, Spielekatalog, Sammlung mit Wunsch- und Einkaufsliste, BGG-Import (zuletzt gebaut, abhängig von der BGG-Lizenz), Partien erfassen, persönliche Statistik. Die App ist ab dem ersten Nutzer nützlich, und das Datenmodell für alles Weitere entsteht hier.
  2. R2 Gemeinsam spielen: Gruppen und Spieltreffs, Terminplanung mit Spielabstimmung, Umkreissuche per PLZ, Mitspieler in Partien verknüpfen, Benachrichtigungen.
  3. R3 Community: Shelfies, Reviews, ausgebautes Profil mit externen Namen und Lieblingsspielen, Spielerranking, Melden und Moderation.
  4. R4 Ökosystem: Händler- und Vereinskonten, Event-Kalender, News-Startseite, optional eine Spendenfunktion (Premium und KI-Erkennung sind zurückgestellt).

Warum diese Reihenfolge

  • Kaltstart: Shelfies, Reviews, Mitspielersuche und Ranking sind leer, solange es kaum Nutzer gibt. Sammlung und Partien-Tracking helfen auch allein und holen die Nutzer, die später die Inhalte liefern.
  • BGG-Import statt KI-Foto in R1: Der Import bringt eine bestehende Sammlung ohne Tippen in die App und löst damit das Onboarding. Die Foto-Erkennung verursacht Kosten pro Aufruf und ist ohne Premium vorerst zurückgestellt, bis die Finanzierung geklärt ist.
  • Händler, Vereine, Events, News: Sie brauchen Verifizierung, Inhalte von außen und Moderation, also deutlich mehr Betriebsaufwand. Das lohnt sich erst, wenn der Kern trägt.
  • Crowdfunding-Liste: Sie ist von Hand pflegbar, allein nutzbar und technisch einfach, passt also als Füllstück in R1 oder R2.
  • Zubehör (Sleeves, Inserts): Der Nutzen hängt komplett an der Datenbasis. Ohne Quelle für Sleeve-Größen bleibt die Funktion leer, deshalb zuerst die Frage der Datenquelle klären.

Startseite: In R1 bis R3 wäre die Startseite ein persönliches Dashboard (zuletzt gespielt, Wunschliste, nächste Termine). Ab R4 wird daraus die News-Seite, die du als Startseite möchtest. Ob das für dich passt, steht unter den offenen Fragen.

Stories: Fundament und Kern

Konto, Katalog, Sammlung und Partien bilden R1. Stories ohne Zusatz gehören in den Release des Epics; Abweichungen stehen in Klammern. Aus den Titeln werden später Forgejo-Issues mit Akzeptanzkriterien.

KTO – Konto & Profil

  • KTO-01 Registrieren, anmelden und Passwort zurücksetzen (E-Mail, optional Apple oder Google)
  • KTO-02 Profil bearbeiten: Anzeigename, Avatar, Kurzbeschreibung, Lieblingsspiele/Genres
  • KTO-03 Wohnort per PLZ angeben und festlegen, was andere davon sehen (R2)
  • KTO-04 Privatsphäre je Bereich einstellen: privat, Freunde, öffentlich
  • KTO-05 Konto und Daten löschen, Daten exportieren
  • KTO-06 Lieblingsspiele im Profil festlegen (R3)
  • KTO-07 Youtube-, BGG-, BGA-, Steam- und Discord-Name mit Link hinterlegen (R3)
  • KTO-08 Profile anderer Nutzer ansehen (R3)
  • KTO-09 Händler- oder Vereinskonto registrieren, mit Adresse, Logo, Öffnungszeiten (R4)
  • KTO-10 Händler und Vereine verifizieren lassen (R4)

KAT – Spielekatalog

  • KAT-01 Spiele suchen nach Titel, Verlag, Spielerzahl, Dauer, Alter
  • KAT-02 Spieldetailseite mit Cover, Eckdaten und Beschreibung
  • KAT-03 Erweiterungen und Editionen eines Spiels abbilden
  • KAT-04 Fehlendes Spiel melden oder anlegen
  • KAT-05 Katalogdaten aus der Quelle laden und aktuell halten

SAM – Sammlung & Listen

  • SAM-01 Spiel zur Sammlung hinzufügen
  • SAM-02 Eigene Angaben pro Spiel: Zustand, Kaufdatum und -preis, Notiz, Standort, Tags
  • SAM-03 Sammlung durchsuchen, filtern und sortieren
  • SAM-04 Wunschliste mit Priorität führen
  • SAM-05 Einkaufsliste führen: geplanter Kauf, Händler, Preis
  • SAM-06 Spiel von der Wunsch- oder Einkaufsliste in die Sammlung übernehmen
  • SAM-07 BGG-Konto verknüpfen
  • SAM-08 Sammlung und Wunschliste aus BGG importieren
  • SAM-09 BGG-Import wiederholen und Änderungen abgleichen
  • SAM-10 Spiele aus einem Foto erkennen: Foto aufnehmen, Vorschläge prüfen, übernehmen (zurückgestellt, bis die Finanzierung geklärt ist)

PAR – Partien & Statistik

  • PAR-01 Partie erfassen: Spiel, Datum, Dauer, Ort, Notiz
  • PAR-02 Mitspieler hinzufügen: andere Nutzer, Gruppenmitglieder, Gäste ohne Konto
  • PAR-03 Ergebnis erfassen: Punkte, Platzierung, Sieger, kooperativ und in Teams
  • PAR-04 Wertungsbogen je Spiel mit frei definierbaren Kategorien
  • PAR-05 Partie bearbeiten und löschen
  • PAR-06 Partienverlauf ansehen und filtern
  • PAR-07 Persönliche Statistik: gespielte Spiele, Partien, Stunden, Siegquote, Verlauf über die Zeit
  • PAR-08 Statistik je Spiel: Partien, durchschnittliche Dauer, Bestwerte, häufigste Mitspieler
  • PAR-09 Gruppenstatistik (R2)
  • PAR-10 Spielerranking (R3, Umfang offen)

Stories: Gemeinsam spielen und Community

Gruppen, Termine und Mitspielersuche bilden R2, Shelfies und Reviews R3. Was ich aus deiner Liste abgeleitet habe, ohne dass es dort steht, ist als „abgeleitet“ markiert.

GRP – Gruppen & Treffs (R2)

  • GRP-01 Gruppe erstellen: Name, Bild, Beschreibung, offen oder nur auf Einladung
  • GRP-02 Mitglieder per Link einladen, Beitrittsanfragen annehmen oder ablehnen
  • GRP-03 Rollen in der Gruppe: Admin und Mitglied
  • GRP-04 Gruppenübersicht mit Mitgliedern, nächsten Terminen und Statistik
  • GRP-05 Gemeinsame Sammlung der Gruppe: wer besitzt welches Spiel
  • GRP-06 Spieltreff anlegen: Ort, Rhythmus, Beschreibung, öffentlich auffindbar
  • GRP-07 Gruppen und Spieltreffs im Umkreis finden (per PLZ)
  • GRP-08 Mitspieler im Umkreis finden und anfragen
  • GRP-09 Termin vorschlagen mit mehreren Datumsoptionen, Mitglieder stimmen ab
  • GRP-10 Termin festlegen, Zu- und Absagen, Erinnerung
  • GRP-11 Spielabstimmung: Spiele aus der Gruppensammlung vorschlagen und abstimmen, filterbar nach Spielerzahl und Dauer
  • GRP-12 Termin in den Gerätekalender exportieren
  • GRP-13 Gruppe verlassen oder auflösen

COM – Community (R3)

  • COM-01 Shelfie hochladen: Foto, Beschreibung, optional Spiele markieren
  • COM-02 Shelfies als Raster durchstöbern und filtern
  • COM-03 Shelfies liken, kommentieren und speichern
  • COM-04 Nutzern folgen und Freunde hinzufügen (abgeleitet)
  • COM-05 Review zu einem Spiel schreiben: Bewertung und Text
  • COM-06 Reviews anderer lesen, sortieren und als hilfreich markieren
  • COM-07 Eigene Reviews und Shelfies bearbeiten und löschen
  • COM-08 Inhalte und Nutzer melden (abgeleitet, siehe QUE)
  • COM-09 Spiele auf Shelfies per KI erkennen und mit dem Katalog verknüpfen (meine Idee, nicht in deiner Liste, Premium, frühestens R4)

Stories: Ökosystem, Zubehör und Querschnitt

News und Events bilden R4, Premium ist zurückgestellt. Crowdfunding und Zubehör sind eigenständig und lassen sich dort einschieben, wo Platz ist. Der Querschnitt (QUE) ist abgeleitet und wird ab R1 mitgebaut, soweit der jeweilige Release ihn braucht.

NEW – News (R4)

  • NEW-01 Startseite mit News-Feed anzeigen
  • NEW-02 Feeds externer Quellen einbinden (Verlage, Blogs, Medien), mit Titel, Teaser und Link
  • NEW-03 Beiträge und Angebote von Händlern anzeigen
  • NEW-04 Feed anpassen: Quellen ein- und ausblenden
  • NEW-05 Quellen verwalten (Admin)
  • NEW-06 Händler veröffentlichen eigene Beiträge, nach Verifizierung

EVT – Events (R4)

  • EVT-01 Event-Kalender ansehen; der Umkreis wird aktiv zugeschaltet
  • EVT-02 Eventdetails: Ort, Zeit, Veranstalter, Beschreibung, Karte
  • EVT-03 Event merken oder zusagen, Erinnerung erhalten
  • EVT-04 Händler oder Verein erstellt und verwaltet Events; Änderung oder Absage benachrichtigt Interessierte
  • EVT-05 Event in den Gerätekalender exportieren
  • EVT-06 Nutzer schlägt ein Event vor (offen, siehe Fragen)

KSG – Crowdfunding (flexibel)

  • KSG-01 Kampagne erfassen: Plattform (Kickstarter oder Gamefound), Name, Link
  • KSG-02 Watchlist mit beobachteten Kampagnen und Enddatum
  • KSG-03 Gebackte Spiele mit Pledge, Add-ons und Status (z. B. gebackt, in Produktion, versendet, geliefert)
  • KSG-04 Erinnerung bei Kampagnenende und Lieferung
  • KSG-05 Geliefertes Spiel in die Sammlung übernehmen

ZUB – Zubehör (später)

  • ZUB-01 Kartensätze eines Spiels mit Sleeve-Größe und Anzahl anzeigen
  • ZUB-02 Eigene verwendete Sleeves je Spiel eintragen
  • ZUB-03 Passende Sleeves vorschlagen
  • ZUB-04 Sleeve-Bedarf für Sammlung oder Einkaufsliste berechnen (abgeleitet)
  • ZUB-05 3D-Print-Inserts je Spiel verlinken: Modell, Quelle, Lizenz
  • ZUB-06 Insert-Links beisteuern und bewerten

PRE – Premium (zurückgestellt)

  • PRE-01 Premium abschließen, verwalten, kündigen
  • PRE-02 Premium-Funktionen freischalten und in der App kenntlich machen
  • PRE-03 Nutzungsgrenzen der KI-Erkennung anzeigen

QUE – Querschnitt (abgeleitet)

  • QUE-01 Benachrichtigungen per Push und E-Mail, einstellbar je Kategorie
  • QUE-02 Inhalte und Nutzer melden, Nutzer blockieren
  • QUE-03 Moderationsansicht für Admins: Meldungen prüfen, sperren, löschen
  • QUE-04 Datenschutz: Einwilligungen, Datenschutzerklärung, Löschfristen
  • QUE-05 Mehrsprachigkeit Deutsch und Englisch
  • QUE-06 Barrierefreiheit
  • QUE-07 Rollen und Rechte: Nutzer, Händler, Verein, Admin
  • QUE-08 Admin-Bereich für Katalog, News-Quellen und Verifizierung

Offene Fragen

F1 bis F9, F11 und F18 sind entschieden (siehe Entscheidungen oben). Die folgenden Fragen können warten, bis die jeweilige Story drankommt. Die Spalte „Mein Vorschlag“ ist das, wovon ich ausgehe, solange du nichts anderes sagst.

Vor den jeweiligen Stories klären

Nr Frage Mein Vorschlag Betrifft
F10 Mitspielersuche: Wie nimmt man Kontakt auf? Strukturierte Anfrage mit kurzer Nachricht, kein freier Chat in R2; Blockieren und Melden sind Pflicht GRP-08, QUE-02
F12 Ranking: Global, in Gruppen oder pro Spiel? Zunächst nur in Gruppen und pro Spiel, kein globales Ranking wegen Manipulation und Datenschutz PAR-10
F13 Shelfies: Welche Interaktion, welche Moderation, welche Limits? Likes, Kommentare, Melden; Prüfung nachträglich; Limit pro Nutzer wegen Speicher COM-01 bis COM-03
F14 Reviews: Welche Skala, ist Text Pflicht? 1 bis 10 Punkte wie bei BGG, Text optional COM-05, COM-06
F15 Kalender „muss aktiv angewählt werden“: Ist der Umkreis-Kalender standardmäßig aus und wird bewusst eingeschaltet? Ja, so verstehe ich es EVT-01
F16 Dürfen normale Nutzer Events einstellen? Nein, nur Händler und Vereine EVT-04, EVT-06
F17 News: Welche Quellen, wie mit Händlerbeiträgen und Werbung umgehen? RSS mit Titel, Teaser, Link; Händlerbeiträge nur von verifizierten Händlern und als Werbung gekennzeichnet NEW
F18 Startseite: Dashboard bis R3, News ab R4 (entschieden, siehe oben) Ja NEW-01
F19 Crowdfunding: von Hand pflegen oder automatisch abgleichen? Von Hand mit Link; prüfen, ob es verlässliche Schnittstellen gibt KSG
F20 Sleeve-Daten: Woher kommen sie? Nutzer tragen sie ein, wir starten mit Daten für beliebte Spiele ZUB-01 bis ZUB-03
F21 3D-Prints: nur verlinken oder Dateien hochladen? Nur verlinken (Urheberrecht, Speicher) ZUB-05, ZUB-06

Was das für die Architektur bedeutet

Die Features laufen auf ein relationales Datenmodell mit sauberen Zugriffsregeln hinaus, ergänzt um Hintergrundjobs und Bildspeicher. Das spricht eher für ein relationales Backend wie das vorgeschlagene Supabase, entschieden wird aber erst in der Architekturphase. Die Tabelle ist die Merkliste dafür.

Feature Folge für die Architektur
Katalog (KAT, SAM, ZUB) Zentrale Stammdaten, auf die alles andere verweist; zu klären ist, ob wir eine Kopie halten oder die Quelle live abfragen (F2)
BGG-Sync Hintergrundjobs mit begrenzter Abrufhäufigkeit und Abgleichlogik für Änderungen
Umkreissuche per PLZ Tabelle mit PLZ-Koordinaten aus offenen Geodaten, räumliche Abfragen in der Datenbank, Stadt wird aus der PLZ abgeleitet und angezeigt, die PLZ selbst bleibt durch Zugriffsregeln verborgen (F5)
Konten für Nutzer, Händler, Vereine Rollen- und Rechtemodell, Verifizierungsstatus, Admin-Bereich
Gruppen, Termine, Abstimmung Mehrnutzer-Daten mit Zugriff nach Gruppenrolle, Benachrichtigungen, Kalender-Export
Shelfies und Avatare Bildspeicher mit Verkleinerung, Größenlimits, Moderation und Speicherkosten
KI-Erkennung Bildmodell (eigenes oder externer Dienst), Kosten je Aufruf, Verarbeitung der Fotos in der EU, Kontingente (Finanzierung noch offen)
News und Feeds Regelmäßiger Abruf externer Quellen, Zwischenspeicher, Quellenverwaltung
Benachrichtigungen Push für iOS, Android und Web sowie E-Mail, Einstellungen je Nutzer
Premium zurückgestellt; bei einer Spendenfunktion gelten die Store-Regeln (F4)
Partien offline erfassen Lokale Speicherung auf dem Gerät und Abgleich bei nächster Verbindung (F3)
Statistik Auswertungen über viele Partien; anfangs reichen Datenbankabfragen

Nächster Schritt: F1 bis F7 und der Release-Schnitt sind entschieden. Du beantragst die BGG-Lizenz, ich schreibe die Akzeptanzkriterien für R1, danach gehen wir in die Architektur (ADR-0001 und folgende).