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>
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:
- Qualität der Antwort (Q): Bewertung von 0-5
- Ease Factor (EF): Schwierigkeitsgrad der Karte (min. 1.3)
- Interval (I): Tage bis zur nächsten Wiederholung
- 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
- new: Noch nie gelernt
- learning: In Lernphase (Intervall < 10 Tage)
- review: Langzeit-Wiederholung (Intervall ≥ 10 Tage)
- 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
-
utils/spacedRepetition.ts- SM-2 Algorithmus Implementation
- Hilfsfunktionen für Intervalle
-
store/studyStore.ts- Progress Management
- Session Verwaltung
- Supabase Integration
-
app/study/session/[id].tsx- Lern-UI mit Bewertungsbuttons
- Intervall-Vorschau
-
Datenbank-Migrationen
create_card_progress_tablecreate_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
- Ehrliche Bewertung: Bewerte Karten ehrlich für optimale Intervalle
- Tägliches Lernen: Regelmäßigkeit ist wichtiger als Intensität
- Reviews priorisieren: Fällige Reviews vor neuen Karten
Für Entwickler
- Ease Factor Grenzen: Nie unter 1.3 fallen lassen
- Timezone-Handling: Reviews um 4 Uhr morgens zurücksetzen
- 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