managarten/manadeck/apps/mobile/Docs/spaced-repetition.md
Till-JS e7f5f942f3 chore: initial commit - consolidate 4 projects into monorepo
Projects included:
- maerchenzauber (NestJS backend + Expo mobile + SvelteKit web + Astro landing)
- manacore (Expo mobile + SvelteKit web + Astro landing)
- manadeck (NestJS backend + Expo mobile + SvelteKit web)
- memoro (Expo mobile + SvelteKit web + Astro landing)

This commit preserves the current state before monorepo restructuring.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-22 23:38:24 +01:00

7.2 KiB

Spaced Repetition System - Dokumentation

Überblick

Manadeck implementiert ein wissenschaftlich fundiertes Spaced Repetition System (SRS) basierend auf dem SuperMemo 2 (SM-2) Algorithmus. Dieses System optimiert den Lernprozess durch intelligente Wiederholungsintervalle, die sich an die individuelle Lernleistung anpassen.

Was ist Spaced Repetition?

Spaced Repetition ist eine Lernmethode, die auf der Vergessenskurve von Hermann Ebbinghaus basiert. Das Prinzip:

  • Informationen werden in zunehmend größeren Intervallen wiederholt
  • Je besser man sich erinnert, desto länger das nächste Intervall
  • Schwierige Karten werden öfter wiederholt als leichte

Der SM-2 Algorithmus

Grundprinzipien

Der SM-2 Algorithmus berechnet optimale Wiederholungsintervalle basierend auf:

  1. Qualität der Antwort (Q): Bewertung von 0-5
  2. Ease Factor (EF): Schwierigkeitsgrad der Karte (min. 1.3)
  3. Interval (I): Tage bis zur nächsten Wiederholung
  4. Repetitions (R): Anzahl erfolgreicher Wiederholungen

Qualitätsstufen

In Manadeck werden 4 Bewertungsstufen verwendet:

Button Qualität (Q) Bedeutung Typisches Intervall
Nochmal 1 Antwort vergessen < 1 Minute
Schwer 3 Mit Mühe erinnert ~6 Minuten
Gut 4 Normal erinnert ~10 Minuten / 1 Tag
Leicht 5 Perfekt erinnert ~4 Tage

Algorithmus-Formel

// Ease Factor Berechnung
EF' = EF + (0.1 - (5 - Q) * (0.08 + (5 - Q) * 0.02))
EF = max(1.3, EF')  // Minimum 1.3

// Intervall-Berechnung
if (Q < 3) {
  // Falsche Antwort
  R = 0
  I = 1 Tag
} else {
  // Richtige Antwort
  if (R == 0) I = 1 Tag
  else if (R == 1) I = 6 Tage
  else I = I(prev) * EF
  
  R = R + 1
}

Implementation in Manadeck

Datenbankstruktur

card_progress Tabelle

- id: UUID (Primary Key)
- user_id: UUID (Foreign Key  users)
- card_id: UUID (Foreign Key  cards)
- deck_id: UUID (Foreign Key  decks)
- ease_factor: Decimal (Default: 2.5)
- interval: Integer (Tage)
- repetitions: Integer
- next_review_date: Timestamp
- last_reviewed_at: Timestamp
- total_reviews: Integer
- correct_reviews: Integer
- incorrect_reviews: Integer
- status: Enum ('new', 'learning', 'review', 'relearning')

Karten-Status

  1. new: Noch nie gelernt
  2. learning: In Lernphase (Intervall < 10 Tage)
  3. review: Langzeit-Wiederholung (Intervall ≥ 10 Tage)
  4. relearning: Nach Fehler zurück in Lernphase

Lernmodi

1. Alle Karten

  • Zeigt alle Karten des Decks
  • Standardreihenfolge nach Position

2. Neue Karten

  • Nur Karten mit Status new
  • Noch nie studierte Karten

3. Wiederholung

  • Karten mit next_review_date ≤ heute
  • Sortiert nach Überfälligkeit (älteste zuerst)

4. Favoriten

  • Nur als Favorit markierte Karten

5. Zufällig

  • Alle Karten in zufälliger Reihenfolge

Lernablauf

1. Session Start

1. Deck auswählen
2. Lernmodus wählen
3. Karten werden gefiltert/sortiert
4. Session wird in Datenbank erstellt

2. Karte lernen

1. Karte anzeigen
2. Antwort geben (Flashcard umdrehen, Quiz beantworten)
3. Schwierigkeit bewerten
4. SM-2 berechnet nächstes Review-Datum
5. Progress in Datenbank speichern

3. Session Ende

1. Statistiken berechnen
2. Session in Datenbank aktualisieren
3. Zusammenfassung anzeigen

Beispiel-Lernverlauf

Tag 1: Erste Begegnung

  • Neue Karte lernen
  • Bewertung: "Gut" (Q=4)
  • Nächste Review: Morgen

Tag 2: Erste Wiederholung

  • Bewertung: "Gut" (Q=4)
  • EF bleibt bei 2.5
  • Nächste Review: In 6 Tagen

Tag 8: Zweite Wiederholung

  • Bewertung: "Leicht" (Q=5)
  • EF steigt auf 2.6
  • Nächste Review: In 15 Tagen (6 * 2.6)

Tag 23: Dritte Wiederholung

  • Bewertung: "Schwer" (Q=3)
  • EF sinkt auf 2.36
  • Nächste Review: In 35 Tagen (15 * 2.36)

Vorteile des Systems

1. Effizienz

  • Minimaler Zeitaufwand
  • Fokus auf schwierige Karten
  • Automatische Intervall-Anpassung

2. Langzeit-Retention

  • Optimale Wiederholungszeitpunkte
  • Bekämpft die Vergessenskurve
  • Nachweislich 90%+ Retention möglich

3. Personalisierung

  • Individuelle Ease Factors pro Karte
  • Anpassung an Lerngeschwindigkeit
  • Berücksichtigt Schwierigkeitsgrad

Code-Referenzen

Hauptdateien

  1. utils/spacedRepetition.ts

    • SM-2 Algorithmus Implementation
    • Hilfsfunktionen für Intervalle
  2. store/studyStore.ts

    • Progress Management
    • Session Verwaltung
    • Supabase Integration
  3. app/study/session/[id].tsx

    • Lern-UI mit Bewertungsbuttons
    • Intervall-Vorschau
  4. Datenbank-Migrationen

    • create_card_progress_table
    • create_study_sessions_table

Wichtige Funktionen

// Hauptfunktion für SM-2 Berechnung
calculateSM2(quality, repetitions, previousInterval, previousEaseFactor)

// Schwierigkeit zu Qualität konvertieren
difficultyToQuality(difficulty: 'easy' | 'medium' | 'hard' | 'again')

// Prüfen ob Karte fällig ist
isCardDue(nextReviewDate: Date | string)

// Review-Queue organisieren
organizeReviewQueue(cards: CardProgress[])

Best Practices

Für Nutzer

  1. Ehrliche Bewertung: Bewerte Karten ehrlich für optimale Intervalle
  2. Tägliches Lernen: Regelmäßigkeit ist wichtiger als Intensität
  3. Reviews priorisieren: Fällige Reviews vor neuen Karten

Für Entwickler

  1. Ease Factor Grenzen: Nie unter 1.3 fallen lassen
  2. Timezone-Handling: Reviews um 4 Uhr morgens zurücksetzen
  3. Progress Backup: Regelmäßig in Datenbank persistieren

Wissenschaftliche Grundlagen

Forschung

  • Basiert auf Piotr Wozniak's SuperMemo Forschung (1987)
  • Ebbinghaus Vergessenskurve (1885)
  • Cognitive Science Prinzipien

Effektivität

  • Studien zeigen: 50% weniger Lernzeit bei gleicher Retention
  • Langzeit-Retention: Bis zu 95% nach 1 Jahr möglich
  • Optimal für: Vokabeln, Fakten, Formeln, Konzepte

Vergleich mit anderen Systemen

Feature Manadeck Anki Quizlet
Algorithmus SM-2 SM-2+ Proprietary
Open Source
Cloud Sync Partial
Mobile App
Kostenlos Freemium

Zukünftige Verbesserungen

Geplant

  • FSRS (Free Spaced Repetition Scheduler) als Alternative
  • Machine Learning für personalisierte Intervalle
  • Heatmap-Kalender für Lernstreak
  • Detaillierte Statistiken pro Karte
  • Import/Export von Anki-Decks

Experimentell

  • Adaptive Tageszeit-Optimierung
  • Kontext-basierte Schwierigkeit
  • Gruppen-Lernstatistiken

Troubleshooting

Problem: Zu viele Reviews

Lösung: Tägliches Limit einführen, schwierige Karten vereinfachen

Problem: Karten werden zu schnell vergessen

Lösung: Ease Factor manuell reduzieren, mehr Kontext hinzufügen

Problem: Intervalle zu lang

Lösung: Bei Unsicherheit "Schwer" statt "Gut" wählen

Fazit

Das Spaced Repetition System in Manadeck bietet eine wissenschaftlich fundierte, effiziente Methode zum Langzeit-Lernen. Durch die SM-2 Implementation erreichen Nutzer optimale Lernresultate mit minimalem Zeitaufwand.


Letzte Aktualisierung: November 2024 Version: 1.0.0