Shuffle/requirements/10-anforderungen.md
cschlaefke 9880a6fd09
Some checks failed
CI / flutter (pull_request) Failing after 4s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Failing after 20s
docs(requirements): resolve follow-up questions N1-N14
Decisions on the follow-up questions from the R1 intake are recorded
in requirements/r1-klaerungen.md and applied to the acceptance
criteria, requirements and backlog: settings (KTO-11), dashboard
(QUE-09, new label epic/querschnitt), catalog seed without third-party
covers (KAT-05), per-user dedup of BGG import reports (SAM-08) and the
confirmed PAR-08 rule. No open questions remain for R1.

Refs #1, #2, #13, #22, #23, #25, #28, #29

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 16:14:31 +01:00

258 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- Quelle: Claude Docs „Shuffle – Anforderungen (Entwurf)“, Export 2026-11-02. Diese Datei ist ab jetzt die Quelle der Wahrheit. -->
# Shuffle – Anforderungen (Entwurf)
2026-11-01 · Chris
> **Änderungsvermerk 2026-11-02:** R1-Entscheidungen aus [`r1-klaerungen.md`](r1-klaerungen.md) als Hinweise ergänzt (Stadt nur für den Nutzer selbst in R1, Offline nur in den Apps, Katalog manuell und Admin-Pflege per Supabase Studio, anonyme Reichweitenmessung, allgemeine Privatsphäre-Regel bei KTO-04, neue R1-Stories KTO-11 und QUE-09). Die R1-Akzeptanzkriterien stehen in `20-r1-akzeptanzkriterien.md`.
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](https://boardgamegeek.com/wiki/page/XML_API_Terms_of_Use) und [Nutzungsleitfaden](https://boardgamegeek.com/using_the_xml_api) ist die Lizenz für kommerzielle Apps nötig, „Powered by BGG“ ist Pflicht, Anfragen laufen über den Server mit Zwischenspeicher. **R1 (Klärungen 24, 44):** Der Katalog wird zum Start nur manuell gepflegt, ein Import-Job kommt erst mit der Lizenz; der Admin pflegt Katalog und Meldungen über Supabase Studio/SQL |
| F3 | Offline: nur das Erfassen von Partien | Lokale Speicherung und Abgleich nur für Partien. **R1 (Klärung 36):** Offline-Erfassung nur in den Apps (iOS, Android); im Browser erscheint der Hinweis „Verbindung nötig“ |
| 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. **R1 (Klärung 9):** Die Stadt ist in R1 nur für den Nutzer selbst sichtbar |
| 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. **R1 (Klärung 21/47):** Selbstbestätigung „mindestens 16“ reicht bis zur rechtlichen Prüfung |
| 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. **R1 (Klärung 42):** eigene Story QUE-09 mit zuletzt gespielt und Wunschliste; nächste Termine erst mit den Gruppen (R2) |
**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
- **Allgemeine Regel (Klärung 19):** Führt ein Release neue Freigaben ein, sind neue Bereiche standardmäßig privat, bis der Nutzer sie freigibt (Privacy by Default). Gilt für alle künftigen Freigabe-Stories (u. a. KTO-03, KTO-06 bis KTO-08, GRP, COM). In R1 besteht KTO-04 nur aus dem Hinweis „alles privat“.
- **KTO-05** Konto und Daten löschen, Daten exportieren (R1: der Einstieg in den Einstellungen gehört zu KTO-05, N14)
- **KTO-11** Einstellungsbereich: Sprache, Abmelden, E-Mail und Passwort ändern, Privatsphäre-Hinweis, Rechtstexte, Hinweis und Ausschalter zur anonymen Messung (neu in R1, Klärungen 22, 43, N5, N14)
- **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 (R1: nur manuelle Pflege durch den Admin über Supabase Studio/SQL, Import erst mit Lizenz; Klärungen 24, 44). Startbestand ca. 200 Spiele, nur Fakten, keine fremden Cover oder Beschreibungstexte, sondern Platzhalter-Cover und eigene Kurztexte (N11)
### 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
- **R1 (Klärung 21/47):** Nur anonyme, cookielose Reichweitenmessung ohne Geräte-IDs und ohne Einwilligung (z. B. selbst gehostet); keine weiteren Analyse- oder Tracking-Dienste. Datenschutzerklärung und Nutzungsbedingungen liefert Chris vor dem Release, rechtliche Prüfung vor dem Release nötig. Löschfrist 30 Tage inkl. Sicherungen (Klärung 20). Die anonyme Messung lässt sich freiwillig in den Einstellungen ausschalten (N5).
- **QUE-05** Mehrsprachigkeit Deutsch und Englisch
- **R1 (N3):** Ohne Anmeldung gilt die Gerätesprache (Fallback Englisch), änderbar; nach der Anmeldung gilt die Profilsprache auf allen Geräten. Keine Option „wie Gerät“.
- **QUE-06** Barrierefreiheit
- **QUE-07** Rollen und Rechte: Nutzer, Händler, Verein, Admin
- **R1 (Klärung 44):** Die Admin-Rolle existiert nur als Datenbankrolle (Zugriffsregeln), ohne eigene Story.
- **QUE-08** Admin-Bereich für Katalog, News-Quellen und Verifizierung
- **R1 (Klärungen 24, 44):** Kein Admin-Bereich in der App bis QUE-08 (R4). Der Admin pflegt Katalog und Meldungen über Supabase Studio/SQL; der Ablauf wird im Repo dokumentiert.
- **QUE-09** Startseite: persönliches Dashboard mit zuletzt gespielt und Wunschliste (neu in R1, Klärung 42; ab R4 ersetzt durch NEW-01). R1 zusätzlich Schnellaktion „Partie erfassen“ und Kurzstatistik, je Bereich 5 Einträge; ohne Anmeldung Katalogsuche und Anmelde-Hinweis (N6–N9)
## 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); in R1 nur in den Apps, im Web nicht (Klärung 36); bei Konflikten gilt die letzte Änderung mit Hinweis an den Nutzer |
| 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).