Implement version 3.0.0 with Analytics Dashboard, Gamification Expansion, and Spaced Repetition System

This commit is contained in:
nate@necloud.us committed 2025-08-13 12:43:18 -04:00
1 parent 27af564a41
commit 7d8470df84
20 files changed
+22999 -23

No files matched your search

+89
View File
@@ -0,0 +1,89 @@
{
"daily": [
{
"id": "daily-practice-10",
"name": "Practice Makes Perfect",
"description": "Complete 10 practice words in a day",
"type": "daily",
"target": 10,
"points": 50,
"icon": "🎯"
},
{
"id": "daily-accuracy-90",
"name": "Sharp Shooter",
"description": "Achieve 90% accuracy in daily practice",
"type": "daily",
"target": 0.9,
"points": 75,
"icon": "🎯"
},
{
"id": "daily-streak-3",
"name": "On Fire",
"description": "Get 3 words correct in a row",
"type": "daily",
"target": 3,
"points": 30,
"icon": "🔥"
}
],
"weekly": [
{
"id": "weekly-words-50",
"name": "Word Warrior",
"description": "Practice 50 words in a week",
"type": "weekly",
"target": 50,
"points": 200,
"icon": "⚔️"
},
{
"id": "weekly-days-5",
"name": "Dedicated Scholar",
"description": "Practice on 5 different days this week",
"type": "weekly",
"target": 5,
"points": 250,
"icon": "📚"
}
],
"achievements": [
{
"id": "achievement-words-100",
"name": "Century Club",
"description": "Practice 100 total words",
"type": "achievement",
"target": 100,
"points": 100,
"icon": "🏆"
},
{
"id": "achievement-words-500",
"name": "Word Master",
"description": "Practice 500 total words",
"type": "achievement",
"target": 500,
"points": 500,
"icon": "👑"
},
{
"id": "achievement-streak-7",
"name": "Weekly Warrior",
"description": "Maintain a 7-day practice streak",
"type": "achievement",
"target": 7,
"points": 300,
"icon": "📅"
},
{
"id": "achievement-accuracy-95",
"name": "Spelling Bee Champion",
"description": "Maintain 95% accuracy across 100 words",
"type": "achievement",
"target": 0.95,
"points": 400,
"icon": "🐝"
}
]
}
+511
View File
@@ -0,0 +1,511 @@
{
"allTime": {
"accuracy": [
{
"username": "benjamina31",
"value": 94.4,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "loganm87",
"value": 93.4,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "williamh77",
"value": 90,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "logant84",
"value": 88.8,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "sophiaa25",
"value": 87.5,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "emmaa72",
"value": 86.7,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "jacobg47",
"value": 84.6,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "oliverb12",
"value": 81.7,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "student1",
"value": 79,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "admin1",
"value": 77.1,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "testuser",
"value": 77.1,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "nate",
"value": 76.3,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "ameliab34",
"value": 74.5,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "masonl4",
"value": 73.1,
"timestamp": "2025-08-13T16:18:54.828Z"
}
],
"totalWords": [
{
"username": "nate",
"value": 1352,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "logant84",
"value": 966,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "williamh77",
"value": 846,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "oliverb12",
"value": 835,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "student1",
"value": 819,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "testuser",
"value": 761,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "ameliab34",
"value": 743,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "admin1",
"value": 724,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "masonl4",
"value": 530,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "sophiaa25",
"value": 419,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "benjamina31",
"value": 344,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "emmaa72",
"value": 304,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "loganm87",
"value": 252,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "jacobg47",
"value": 110,
"timestamp": "2025-08-13T16:18:54.828Z"
}
],
"sessionsCompleted": [
{
"username": "nate",
"value": 129,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "student1",
"value": 80,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "admin1",
"value": 73,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "testuser",
"value": 71,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "logant84",
"value": 45,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "benjamina31",
"value": 41,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "jacobg47",
"value": 37,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "loganm87",
"value": 33,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "sophiaa25",
"value": 31,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "emmaa72",
"value": 28,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "masonl4",
"value": 22,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "williamh77",
"value": 21,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "ameliab34",
"value": 9,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "oliverb12",
"value": 7,
"timestamp": "2025-08-13T16:18:54.828Z"
}
],
"streakDays": [
{
"username": "nate",
"value": 18,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "loganm87",
"value": 14,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "logant84",
"value": 12,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "benjamina31",
"value": 12,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "student1",
"value": 10,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "sophiaa25",
"value": 10,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "williamh77",
"value": 9,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "oliverb12",
"value": 8,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "testuser",
"value": 7,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "ameliab34",
"value": 7,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "admin1",
"value": 6,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "jacobg47",
"value": 2,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "emmaa72",
"value": 1,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "masonl4",
"value": 1,
"timestamp": "2025-08-13T16:18:54.828Z"
}
]
},
"weekly": {
"accuracy": [
{
"username": "benjamina31",
"value": 98.2,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "loganm87",
"value": 95.80000000000001,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "logant84",
"value": 89.8,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "emmaa72",
"value": 89.3,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "williamh77",
"value": 88.8,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "sophiaa25",
"value": 87.5,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "student1",
"value": 83.7,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "jacobg47",
"value": 81.19999999999999,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "oliverb12",
"value": 80.10000000000001,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "nate",
"value": 77.2,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "ameliab34",
"value": 76.9,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "masonl4",
"value": 75.39999999999999,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "testuser",
"value": 74.1,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "admin1",
"value": 73.19999999999999,
"timestamp": "2025-08-13T16:18:54.828Z"
}
],
"totalWords": [
{
"username": "logant84",
"value": 53,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "masonl4",
"value": 52,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "oliverb12",
"value": 50,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "ameliab34",
"value": 40,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "admin1",
"value": 35,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "sophiaa25",
"value": 34,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "student1",
"value": 33,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "testuser",
"value": 32,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "benjamina31",
"value": 31,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "nate",
"value": 21,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "emmaa72",
"value": 19,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "loganm87",
"value": 17,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "williamh77",
"value": 15,
"timestamp": "2025-08-13T16:18:54.828Z"
},
{
"username": "jacobg47",
"value": 11,
"timestamp": "2025-08-13T16:18:54.828Z"
}
],
"sessionsCompleted": [
{
"username": "logant84",
"value": 7,
"timestamp": "2025-08-13T16:18:54.829Z"
},
{
"username": "admin1",
"value": 6,
"timestamp": "2025-08-13T16:18:54.829Z"
},
{
"username": "loganm87",
"value": 5,
"timestamp": "2025-08-13T16:18:54.829Z"
},
{
"username": "emmaa72",
"value": 5,
"timestamp": "2025-08-13T16:18:54.829Z"
},
{
"username": "jacobg47",
"value": 5,
"timestamp": "2025-08-13T16:18:54.829Z"
},
{
"username": "benjamina31",
"value": 5,
"timestamp": "2025-08-13T16:18:54.829Z"
},
{
"username": "masonl4",
"value": 4,
"timestamp": "2025-08-13T16:18:54.829Z"
},
{
"username": "williamh77",
"value": 3,
"timestamp": "2025-08-13T16:18:54.829Z"
},
{
"username": "nate",
"value": 2,
"timestamp": "2025-08-13T16:18:54.829Z"
},
{
"username": "student1",
"value": 2,
"timestamp": "2025-08-13T16:18:54.829Z"
},
{
"username": "sophiaa25",
"value": 2,
"timestamp": "2025-08-13T16:18:54.829Z"
},
{
"username": "testuser",
"value": 1,
"timestamp": "2025-08-13T16:18:54.829Z"
},
{
"username": "ameliab34",
"value": 1,
"timestamp": "2025-08-13T16:18:54.829Z"
},
{
"username": "oliverb12",
"value": 1,
"timestamp": "2025-08-13T16:18:54.829Z"
}
]
},
"currentWeek": "2025-3"
}
+551
View File
@@ -0,0 +1,551 @@
{
"admin1": {
"streak": {
"current": 5,
"longest": 11,
"lastPractice": "2025-08-12"
},
"points": 1017,
"level": 3,
"dailyChallenges": [
{
"id": "daily-practice-10",
"date": "2025-08-13",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-12",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-12",
"progress": 1
},
{
"id": "daily-streak-3",
"date": "2025-08-12",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-10",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-09",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-09",
"progress": 1
},
{
"id": "daily-streak-3",
"date": "2025-08-09",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-08",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-08",
"progress": 1
},
{
"id": "daily-streak-3",
"date": "2025-08-08",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-07",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-07",
"progress": 1
},
{
"id": "daily-streak-3",
"date": "2025-08-07",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-06",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-06",
"progress": 1
},
{
"id": "daily-streak-3",
"date": "2025-08-06",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-05",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-05",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-04",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-04",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-02",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-07-31",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-07-31",
"progress": 1
},
{
"id": "daily-streak-3",
"date": "2025-07-31",
"progress": 1
}
],
"weeklyChallenges": [
{
"id": "weekly-days-5",
"weekStart": "2025-07-30",
"progress": 1
},
{
"id": "weekly-words-50",
"weekStart": "2025-07-23",
"progress": 1
},
{
"id": "weekly-days-5",
"weekStart": "2025-07-16",
"progress": 1
}
],
"achievements": [
{
"id": "achievement-words-100",
"date": "2025-07-22",
"progress": 1
},
{
"id": "achievement-words-500",
"date": "2025-08-01",
"progress": 1
}
],
"stats": {
"wordsAttempted": 574,
"wordsCorrect": 415.86,
"sessionsCompleted": 69,
"averageAccuracy": 0.9
}
},
"nate": {
"streak": {
"current": 2,
"longest": 12,
"lastPractice": "2025-08-12"
},
"points": 543,
"level": 2,
"dailyChallenges": [
{
"id": "daily-practice-10",
"date": "2025-08-13",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-13",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-11",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-11",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-09",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-09",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-07",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-07",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-06",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-05",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-05",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-04",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-04",
"progress": 1
},
{
"id": "daily-streak-3",
"date": "2025-08-04",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-03",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-03",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-02",
"progress": 1
}
],
"weeklyChallenges": [
{
"id": "weekly-words-50",
"weekStart": "2025-07-23",
"progress": 1
}
],
"achievements": [
{
"id": "achievement-words-100",
"date": "2025-08-01",
"progress": 1
}
],
"stats": {
"wordsAttempted": 817,
"wordsCorrect": 317.68,
"sessionsCompleted": 79,
"averageAccuracy": 0.95
}
},
"student1": {
"streak": {
"current": 6,
"longest": 9,
"lastPractice": "2025-08-12"
},
"points": 574,
"level": 2,
"dailyChallenges": [
{
"id": "daily-practice-10",
"date": "2025-08-13",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-12",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-12",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-11",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-11",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-10",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-06",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-06",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-05",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-05",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-04",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-04",
"progress": 1
},
{
"id": "daily-streak-3",
"date": "2025-08-04",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-03",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-02",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-01",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-01",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-07-31",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-07-31",
"progress": 1
},
{
"id": "daily-streak-3",
"date": "2025-07-31",
"progress": 1
}
],
"weeklyChallenges": [
{
"id": "weekly-words-50",
"weekStart": "2025-08-06",
"progress": 1
}
],
"achievements": [
{
"id": "achievement-words-100",
"date": "2025-07-23",
"progress": 1
}
],
"stats": {
"wordsAttempted": 102,
"wordsCorrect": 648.1800000000001,
"sessionsCompleted": 65,
"averageAccuracy": 0.78
}
},
"testuser": {
"streak": {
"current": 13,
"longest": 20,
"lastPractice": "2025-08-12"
},
"points": 843,
"level": 2,
"dailyChallenges": [
{
"id": "daily-practice-10",
"date": "2025-08-13",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-13",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-12",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-11",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-11",
"progress": 1
},
{
"id": "daily-streak-3",
"date": "2025-08-11",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-09",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-09",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-08",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-07",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-06",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-06",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-05",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-04",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-02",
"progress": 1
},
{
"id": "daily-practice-10",
"date": "2025-08-01",
"progress": 1
},
{
"id": "daily-accuracy-90",
"date": "2025-08-01",
"progress": 1
},
{
"id": "daily-streak-3",
"date": "2025-08-01",
"progress": 1
}
],
"weeklyChallenges": [
{
"id": "weekly-words-50",
"weekStart": "2025-08-06",
"progress": 1
},
{
"id": "weekly-words-50",
"weekStart": "2025-07-30",
"progress": 1
}
],
"achievements": [
{
"id": "achievement-words-100",
"date": "2025-08-03",
"progress": 1
},
{
"id": "achievement-words-500",
"date": "2025-07-18",
"progress": 1
}
],
"stats": {
"wordsAttempted": 353,
"wordsCorrect": 789.4499999999999,
"sessionsCompleted": 87,
"averageAccuracy": 0.88
}
}
}
+17805 -2
View File
File diff suppressed because it is too large. Load diff
+300
View File
@@ -0,0 +1,300 @@
{
"nate": {
"settings": {
"dailyLimit": 20,
"reviewThreshold": 3,
"newWordsPerDay": 5
},
"stats": {
"totalReviews": 15,
"correctReviews": 9,
"totalWords": 6,
"masteredWords": 0
},
"words": {
"computer": {
"easeFactor": 2.5,
"interval": 3,
"repetitions": 3,
"lastReview": "2025-08-10",
"nextReview": "2025-08-13"
},
"keyboard": {
"easeFactor": 2.3,
"interval": 2,
"repetitions": 2,
"lastReview": "2025-08-11",
"nextReview": "2025-08-13"
},
"mouse": {
"easeFactor": 2.8,
"interval": 4,
"repetitions": 4,
"lastReview": "2025-08-09",
"nextReview": "2025-08-13"
},
"screen": {
"easeFactor": 3,
"interval": 6,
"repetitions": 5,
"lastReview": "2025-08-07",
"nextReview": "2025-08-13"
},
"printer": {
"easeFactor": 2.2,
"interval": 1,
"repetitions": 1,
"lastReview": "2025-08-12",
"nextReview": "2025-08-13"
},
"not": {
"easeFactor": 2.6,
"interval": 7,
"repetitions": 3,
"lastReview": "2025-08-12",
"nextReview": "2025-08-20"
},
"bot": {
"easeFactor": 2.8,
"interval": 15,
"repetitions": 4,
"lastReview": "2025-08-05",
"nextReview": "2025-08-14"
},
"snot": {
"easeFactor": 2.2,
"interval": 1,
"repetitions": 1,
"lastReview": "2025-08-12",
"nextReview": "2025-08-14"
},
"bate": {
"easeFactor": 2.1,
"interval": 1,
"repetitions": 1,
"lastReview": "2025-08-12",
"nextReview": "2025-08-14"
},
"hate": {
"easeFactor": 2.2,
"interval": 3,
"repetitions": 2,
"lastReview": "2025-08-10",
"nextReview": "2025-08-15"
},
"late": {
"easeFactor": 2.5,
"interval": 15,
"repetitions": 4,
"lastReview": "2025-08-11",
"nextReview": "2025-08-11"
}
}
},
"student1": {
"settings": {
"dailyLimit": 20,
"reviewThreshold": 3,
"newWordsPerDay": 5
},
"stats": {
"totalReviews": 10,
"correctReviews": 5,
"totalWords": 5,
"masteredWords": 0
},
"words": {
"apple": {
"easeFactor": 2.2,
"interval": 3,
"repetitions": 2,
"lastReview": "2025-08-10",
"nextReview": "2025-08-10"
},
"banana": {
"easeFactor": 2.1,
"interval": 1,
"repetitions": 1,
"lastReview": "2025-08-12",
"nextReview": "2025-08-14"
},
"cherry": {
"easeFactor": 2.4,
"interval": 3,
"repetitions": 2,
"lastReview": "2025-08-11",
"nextReview": "2025-08-16"
},
"date": {
"easeFactor": 2.5,
"interval": 1,
"repetitions": 1,
"lastReview": "2025-08-12",
"nextReview": "2025-08-13"
},
"elderberry": {
"easeFactor": 2.3,
"interval": 15,
"repetitions": 4,
"lastReview": "2025-08-11",
"nextReview": "2025-08-11"
}
}
},
"admin1": {
"settings": {
"dailyLimit": 20,
"reviewThreshold": 3,
"newWordsPerDay": 5
},
"stats": {
"totalReviews": 12,
"correctReviews": 9,
"totalWords": 3,
"masteredWords": 1
},
"words": {
"administration": {
"easeFactor": 2.5,
"interval": 3,
"repetitions": 3,
"lastReview": "2025-08-10",
"nextReview": "2025-08-13"
},
"education": {
"easeFactor": 2.8,
"interval": 4,
"repetitions": 4,
"lastReview": "2025-08-09",
"nextReview": "2025-08-13"
},
"technology": {
"easeFactor": 2.3,
"interval": 2,
"repetitions": 2,
"lastReview": "2025-08-11",
"nextReview": "2025-08-13"
},
"development": {
"easeFactor": 3,
"interval": 6,
"repetitions": 5,
"lastReview": "2025-08-07",
"nextReview": "2025-08-13"
},
"programming": {
"easeFactor": 3,
"interval": 6,
"repetitions": 5,
"lastReview": "2025-08-07",
"nextReview": "2025-08-13"
},
"boy": {
"easeFactor": 2.7,
"interval": 15,
"repetitions": 4,
"lastReview": "2025-08-09",
"nextReview": "2025-08-20"
},
"bot": {
"easeFactor": 2.6,
"interval": 40,
"repetitions": 6,
"lastReview": "2025-07-23",
"nextReview": "2025-08-25"
},
"snot": {
"easeFactor": 2.4,
"interval": 3,
"repetitions": 2,
"lastReview": "2025-08-10",
"nextReview": "2025-08-10"
}
}
},
"testuser": {
"settings": {
"dailyLimit": 20,
"reviewThreshold": 3,
"newWordsPerDay": 5
},
"stats": {
"totalReviews": 32,
"correctReviews": 23,
"totalWords": 10,
"masteredWords": 3
},
"words": {
"hello": {
"easeFactor": 2.4,
"interval": 7,
"repetitions": 3,
"lastReview": "2025-08-07",
"nextReview": "2025-08-14"
},
"world": {
"easeFactor": 2.2,
"interval": 3,
"repetitions": 2,
"lastReview": "2025-08-10",
"nextReview": "2025-08-14"
},
"test": {
"easeFactor": 2.2,
"interval": 7,
"repetitions": 3,
"lastReview": "2025-08-08",
"nextReview": "2025-08-14"
},
"sample": {
"easeFactor": 2.2,
"interval": 3,
"repetitions": 2,
"lastReview": "2025-08-11",
"nextReview": "2025-08-16"
},
"basic": {
"easeFactor": 2.7,
"interval": 40,
"repetitions": 6,
"lastReview": "2025-08-03",
"nextReview": "2025-08-14"
},
"learn": {
"easeFactor": 2.4,
"interval": 0,
"repetitions": 0,
"lastReview": null,
"nextReview": "2025-08-13"
},
"spell": {
"easeFactor": 2.2,
"interval": 1,
"repetitions": 1,
"lastReview": "2025-08-12",
"nextReview": "2025-08-14"
},
"word": {
"easeFactor": 2.9,
"interval": 20,
"repetitions": 5,
"lastReview": "2025-07-27",
"nextReview": "2025-08-27"
},
"study": {
"easeFactor": 2.4,
"interval": 7,
"repetitions": 3,
"lastReview": "2025-08-08",
"nextReview": "2025-08-14"
},
"practice": {
"easeFactor": 2.8,
"interval": 80,
"repetitions": 7,
"lastReview": "2025-07-06",
"nextReview": "2025-08-14"
}
}
}
}