This repository has been archived on 2026-05-06. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
tippspiel/docs/superpowers/specs/2026-04-11-phase1-engagement-ux-design.md
T
Ronny a521f5656c
Build & Deploy Tippspiel / build (push) Successful in 40s
chore: suppress markdownlint warnings in spec docs
2026-04-12 19:39:53 +02:00

10 KiB

Phase 1: Engagement & UX-Polish — Design Spec

Datum: 2026-04-11 Projekt: WM 2026 Tippspiel Ziel: Die App von "funktional" zu "macht Spaß" transformieren. Mitarbeiter sollen beim Öffnen lächeln und täglich zurückkommen. Zielplattform: Mobile-First (Staffbase-App auf Smartphone), Desktop als Bonus Launch: Anfang Juni 2026 (Intranet-Post), WM-Start 11. Juni 2026


1. Neue Startseite: Dashboard

Die aktuelle Startseite zeigt 104 Spiele als endlose Liste. Die neue Startseite wird ein persönliches WM-Cockpit.

Layout: "Hero + Stats + Nudges"

Hero-Bereich (oberes Drittel):

  • Nächstes tippbares Spiel prominent angezeigt mit Team-Flaggen und Countdown-Timer

  • Wenn bereits getippt: Tipp anzeigen mit Häkchen ("Dein Tipp: 2:1 ✓")

  • Wenn noch nicht getippt: "Jetzt tippen"-Button

  • Wenn kein Spiel ansteht: Nächstes Spiel mit Datum ("Nächstes Spiel: Morgen 21:00")

Stats-Kacheln (mittleres Drittel):

  • Drei kompakte Kacheln nebeneinander:
    • Dein Rang (Platzierung mit Pfeil hoch/runter seit letzter Änderung)
    • Punkte (Gesamtpunktzahl)
    • Streak (🔥-Counter, aktuelle Serie an abgegebenen Tipps)

Nudge-Bereich (unteres Drittel):

  • Kontextabhängige Handlungsaufforderungen:

    • "📅 Heute noch 2 Spiele ohne Tipp" → Link zum Spielplan
    • "🏆 Max führt mit 15 Punkten" → Link zur Rangliste
    • "🎯 Letzte Auswertung: 3 Punkte für Brazil vs Serbia!" → Link zum Ergebnis
  • Maximal 2-3 Nudges, priorisiert nach Relevanz

Navigationsänderung: Der volle Spielplan wird zur eigenen Seite "Spiele" in der Navigation. Dashboard ist die neue Startseite.


2. Bottom Navigation Bar

Die Header-Navigation wird durch eine feste Bottom Navigation ersetzt (Mobile-First-Standard).

4 Haupttabs:

  • 🏠 Home — Dashboard (neue Startseite)

  • Spiele — Spielplan mit Smart Sections

  • 🏆 Rangliste — Leaderboard

  • 👤 Profil — Persönliche Statistiken

Header: Wird schlank — nur Logo ("WM 2026 Tippspiel"), optional Notification-Badge, Theme-Toggle.

Admin: Nicht mehr in der Hauptnavigation. Nur für Editoren sichtbar als Zahnrad-Icon im Header. Viewer sehen es nicht.

Desktop: Bottom Nav wird zur Standard-Sidebar oder bleibt als Header-Nav — sekundäre Priorität, Mobile-Erlebnis bestimmt das Design.


3. Smart Sections im Spielplan

Die 104-Spiele-Liste wird intelligent in Zeitabschnitte gruppiert.

Abschnitte (automatisch basierend auf aktuellem Datum):

Abschnitt Default-Zustand Inhalt
Heute Expandiert, farbig hervorgehoben Alle Spiele des Tages
Morgen Expandiert Alle Spiele des Folgetags
Diese Woche Kollapsiert, Anzahl angezeigt Restliche Spiele der Woche
Nächste Woche+ Kollapsiert Spätere Spiele
Vergangene Spiele Kollapsiert Letzte Ergebnisse + eigene Punkte

Verhalten:

  • Abschnitte sind auf-/zuklappbar (Accordion)

  • "Heute" scrollt automatisch in den Viewport beim Öffnen

  • Leerer Abschnitt wird ausgeblendet (z.B. "Heute" wenn kein Spiel)

  • Stage-Filter (Gruppenphase, Achtelfinale...) wird zum optionalen Dropdown statt Button-Leiste


4. Zustandsbasierte Match-Cards

Jede Match-Card sieht visuell anders aus je nach Spielstatus. Die aktuellen Cards sind identisch unabhängig vom Zustand.

5 visuelle Zustände:

Offen (tippbar)

  • Standard-Design mit Team-Flaggen und Kick-off-Zeit

  • "Tipp abgeben"-Button prominent

  • Countdown wenn <24h bis Anpfiff

  • Pulsierender roter Countdown wenn <1h

Getippt

  • Grüner linker Rand / Akzent

  • Tipp prominent angezeigt ("Dein Tipp: 2:1")

  • "Ändern"-Link statt "Tipp abgeben"

  • Häkchen-Icon

🔴 Live (in Spielgang)

  • Pulsierender roter Punkt neben "LIVE"

  • Aktueller Spielstand (wenn über Sync verfügbar)

  • Tipp daneben zum Vergleich

  • Tippfenster geschlossen — Schloss-Icon

🏁 Beendet (ausgewertet)

  • Endergebnis prominent

  • Dein Tipp + Punkte-Badge:

    • 🥇 Gold-Badge (3 Pkt): Exakter Treffer, goldener Schimmer-Effekt
    • Grüner Badge (1 Pkt): Richtige Tendenz
    • Grauer Badge (0 Pkt): Falsch getippt

🔒 Verpasst (nicht getippt, Spiel vorbei)

  • Ausgegraut / reduzierte Opacity

  • "Nicht getippt" Label

  • Leichter visueller "Shame-Effekt" als Motivation fürs nächste Mal


5. Emotionale Momente & Animationen

5 Schlüsselmomente, die die App lebendig machen.

5.1 Tipp-Bestätigung

  • Trigger: User klickt "Tipp bestätigen"

  • Animation: Card pulsiert kurz grün, animiertes Häkchen fliegt rein

  • Text: "Dein Tipp ist drin! 🎯" als kurze Success-Message

  • Mobile: Subtiles Haptic-Feedback (Vibration via navigator.vibrate)

  • Dauer: ~1 Sekunde, dann Modal schließt

5.2 Live-Countdown vor Anpfiff

  • Trigger: Spiel startet in <1 Stunde

  • Anzeige: Pulsierender roter Countdown-Timer auf der Match-Card ("Noch 12 Min!")

  • Urgency-Stufen:

    • <24h: Countdown in Stunden ("in 5h")
    • <1h: Pulsierender roter Countdown in Minuten
    • <5min: Schnelleres Pulsieren
  • Nach Anpfiff: "Tippfenster geschlossen" mit Schloss-Icon, sanfte Transition

5.3 Punkte-Reveal nach Spielende

  • Trigger: User öffnet App / navigiert zu einem ausgewerteten Spiel, das noch nicht "gesehen" wurde

  • Sequenz (gestaffelt, ~2-3 Sekunden):

    1. Endergebnis einblenden (z.B. "Brazil 3:1 Serbia")
    2. "Dein Tipp war: 3:1" einblenden
    3. Punkte-Counter animiert hochzählen
  • Varianten nach Ergebnis:

    • Exakt (3 Pkt): 🎉 Konfetti-Explosion, goldener "EXAKT!"-Badge, Celebratory-Puls
    • Tendenz (1 Pkt): 👏 Grüner Puls-Effekt, "Richtige Tendenz!"
    • Falsch (0 Pkt): 😅 Kurzes Kopfschütteln-Emoji, "Knapp daneben..."
  • "Gesehen"-Flag: Jeder Reveal wird nur einmal gezeigt (localStorage-basiert)

5.4 Ranglistenveränderung

  • Trigger: Rang hat sich seit letztem Besuch geändert

  • Anzeige: Toast-Notification beim App-Öffnen:

    • Aufstieg: "⬆️ Du bist auf Platz 3 aufgestiegen!"
    • Abstieg: "⬇️ Du bist auf Platz 7 gerutscht — hol dir die Punkte zurück!"
    • Knapper Verfolger: "⚠️ Anna ist nur noch 1 Punkt hinter dir!"
  • Speicherung: Letzter bekannter Rang in localStorage, Vergleich bei jedem Laden

5.5 Streak-Tracker

  • Definition: Anzahl aufeinanderfolgender Spiele, für die ein Tipp abgegeben wurde (nicht Korrektheit, nur Teilnahme)

  • Anzeige: 🔥-Counter auf dem Dashboard und im Profil

  • Meilensteine:

    • 3er-Streak: 🔥 Feuer-Icon erscheint
    • 10er-Streak: 🔥🔥 Doppel-Feuer
    • 20er-Streak: Blitz-Icon
  • Streak-Bruch: "Deine 7er-Serie ist gerissen! Starte eine neue." als Nudge auf dem Dashboard

  • Backend: Streak wird bei Tipp-Abgabe berechnet (aufeinanderfolgende Spiele nach Kick-off-Datum)


6. Profil-Seite: Reiches Profil

Die aktuelle Profil-Seite zeigt Name, Rang und 4 Stat-Boxen. Das Redesign macht sie persönlich und interessant.

Layout (von oben nach unten):

Header-Card:

  • Initialen-Avatar (bestehendes Design)

  • Name + Rang-Badge ("🏆 Platz 5")

  • Lieblingsteam mit Flagge (bestehende "Team hinzufügen"-Funktion, prominenter platziert)

Stats-Ring:

  • Kreisdiagramm (Donut-Chart) mit Verteilung: Exakt / Tendenz / Falsch

  • Gesamtpunktzahl in der Mitte des Rings

  • Legende darunter

Tipp-Historie:

  • Scrollbare Liste: "Deine letzten 10 Tipps"

  • Jeder Eintrag: Teams, dein Tipp, Ergebnis, Punkte-Badge

  • Expandierbar auf alle Tipps

Fun-Stats:

  • "Dein Lieblings-Tipp: 1:0 (5x getippt)"

  • "Du tippst 70% Heimsiege"

  • "Längste Streak: 🔥12"

  • Rotiert oder zeigt 2-3 gleichzeitig

Achievement-Platzhalter (Vorgriff Phase 2):

  • Badge-Leiste am unteren Rand

  • Grau/locked wenn noch nicht erreicht, farbig wenn freigeschaltet

  • Phase 1: Platzhalter-UI, Logik kommt in Phase 2


7. Entfernte / Vereinfachte Features

KI-Agent / Expertenblick — ENTFERNT

  • Chat-Widget (Fußball-Icon unten rechts) wird entfernt

  • "Expertenblick"-Accordion im Tipp-Modal wird entfernt

  • Dateien: AgentChat.tsx, Agent-Route im Backend (/api/agent) können entfernt oder deaktiviert werden

  • Begründung: Nice-to-have, lenkt vom Kernflow ab, spart Platz auf Mobile

Tipp-Modal — VERSCHLANKT

  • Entfernt: Gruppeninfo-Header, Kick-off-Datum (steht schon auf der Card), Expertenblick-Accordion

  • Bleibt: Team-Flaggen + Namen, Score-Picker (+/-), Tendenz-Anzeige, "Tipp bestätigen"-Button

  • Neu: Erfolgsanimation nach Bestätigung (siehe 5.1)

Stage-Filter — VEREINFACHT

  • Aktuell: 8 horizontale Filter-Buttons

  • Neu: Dropdown/Select im Spielplan-Header

  • Smart Sections übernehmen die Hauptnavigation im Spielplan

Admin-Navigation — VERSTECKT

  • Nicht mehr als Haupttab sichtbar

  • Nur für User mit Editor-Rolle: Zahnrad-Icon im Header

  • Viewer sehen keine Admin-UI


8. Technische Hinweise

Frontend

  • Framework: React + Vite + TypeScript (bestehend)

  • Animationen: CSS-Animationen + framer-motion für komplexere Sequenzen (Konfetti, Punkte-Reveal)

  • Konfetti: Lightweight-Library wie canvas-confetti (~3KB)

  • Charts: Donut-Chart für Profil — entweder SVG-basiert selbst gebaut oder leichtgewichtige Library

  • Haptic: navigator.vibrate(50) für Mobile (Progressive Enhancement, kein Fallback nötig)

  • State: localStorage für Streak, gesehene Reveals, letzter Rang

Backend

  • Streak-Berechnung: Neue Query oder Service-Funktion, die aufeinanderfolgende Tipps zählt

  • Dashboard-Daten: Neuer Endpoint /api/dashboard der Hero-Spiel, Stats und Nudges gebündelt liefert

  • Cleanup: Agent-Route kann deaktiviert werden (Feature-Flag oder entfernen)

Kein Breaking Change

  • Bestehende API-Endpoints bleiben kompatibel

  • Datenbank-Schema braucht keine Migration (Streak wird berechnet, nicht gespeichert)

  • Bestehende Tipps und Punkte bleiben erhalten


9. Phasen-Übersicht

Phase Inhalt Zeitrahmen
Phase 1 (dieses Dokument) Dashboard, Bottom Nav, Smart Sections, Emotionale Momente, Match-Cards, Profil, Cleanup Vor Launch (bis Ende Mai)
Phase 2 Badges & Achievements, Wochenwertung, Streak-Meilenstein-Rewards Zum Launch / erste WM-Woche
Phase 3 Tipps anderer sehen, Reaktionen/Emojis, Abteilungs-Challenge Während der WM, iterativ