Spaces:
Sleeping
Sleeping
Upload 21 files
Browse files- config/__pycache__/settings.cpython-311.pyc +0 -0
- config/__pycache__/settings.cpython-313.pyc +0 -0
- config/__pycache__/themes.cpython-311.pyc +0 -0
- config/__pycache__/themes.cpython-313.pyc +0 -0
- config/init.py +22 -0
- config/settings.py +125 -0
- config/themes.py +70 -0
- data/.gitkeep +0 -0
- data/leaderboard.json +9 -0
- data/performance_demo_user.json +23 -0
- data/performance_guest_1751358180.json +23 -0
- data/performance_guest_1751358886.json +23 -0
- data/performance_guest_1751359351.json +23 -0
- data/performance_guest_1751359606.json +40 -0
- data/scores_demo_user.json +40 -0
- data/scores_guest_1751358767.json +23 -0
- data/scores_guest_1751358886.json +50 -0
- data/scores_guest_1751359351.json +23 -0
- data/scores_guest_1751359606.json +41 -0
- data/user_scores.json +42 -0
- data/users.json +14 -0
config/__pycache__/settings.cpython-311.pyc
ADDED
|
Binary file (2.37 kB). View file
|
|
|
config/__pycache__/settings.cpython-313.pyc
ADDED
|
Binary file (2.55 kB). View file
|
|
|
config/__pycache__/themes.cpython-311.pyc
ADDED
|
Binary file (1.33 kB). View file
|
|
|
config/__pycache__/themes.cpython-313.pyc
ADDED
|
Binary file (1.26 kB). View file
|
|
|
config/init.py
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# config/__init__.py
|
| 2 |
+
"""Configuration module for TriviaVerse"""
|
| 3 |
+
|
| 4 |
+
from .settings import *
|
| 5 |
+
from .themes import *
|
| 6 |
+
|
| 7 |
+
__all__ = [
|
| 8 |
+
"APP_NAME",
|
| 9 |
+
"APP_VERSION",
|
| 10 |
+
"APP_DESCRIPTION",
|
| 11 |
+
"WIKIPEDIA_API",
|
| 12 |
+
"WIKIDATA_API",
|
| 13 |
+
"WIKIBOOKS_API",
|
| 14 |
+
"WIKI_REST_API",
|
| 15 |
+
"DIFFICULTY_LEVELS",
|
| 16 |
+
"QUESTIONS_PER_QUIZ",
|
| 17 |
+
"BASE_POINTS",
|
| 18 |
+
"BADGES",
|
| 19 |
+
"ACHIEVEMENTS",
|
| 20 |
+
"THEMES",
|
| 21 |
+
"MOBILE_BREAKPOINT",
|
| 22 |
+
]
|
config/settings.py
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# config/settings.py
|
| 2 |
+
"""Enhanced configuration settings for TriviaVerse"""
|
| 3 |
+
|
| 4 |
+
# API Endpoints
|
| 5 |
+
WIKIPEDIA_API = "https://en.wikipedia.org/w/api.php"
|
| 6 |
+
WIKIDATA_API = "https://www.wikidata.org/w/api.php"
|
| 7 |
+
WIKIBOOKS_API = "https://en.wikibooks.org/w/api.php"
|
| 8 |
+
WIKI_REST_API = "https://en.wikipedia.org/api/rest_v1/page/summary/"
|
| 9 |
+
|
| 10 |
+
# App Settings
|
| 11 |
+
APP_NAME = "TriviaVerse"
|
| 12 |
+
APP_VERSION = "2.0.0"
|
| 13 |
+
APP_DESCRIPTION = "A Dynamic Quiz App Powered by Wikipedia, Wikidata & Wikibooks"
|
| 14 |
+
|
| 15 |
+
# Difficulty Levels with scoring multipliers
|
| 16 |
+
DIFFICULTY_LEVELS = {
|
| 17 |
+
"Easy": {
|
| 18 |
+
"description": "Direct Wikipedia summaries",
|
| 19 |
+
"multiplier": 1.0,
|
| 20 |
+
"time_limit": 45,
|
| 21 |
+
"hints_allowed": 2,
|
| 22 |
+
},
|
| 23 |
+
"Medium": {
|
| 24 |
+
"description": "Deeper Wikidata relationships",
|
| 25 |
+
"multiplier": 1.5,
|
| 26 |
+
"time_limit": 30,
|
| 27 |
+
"hints_allowed": 1,
|
| 28 |
+
},
|
| 29 |
+
"Hard": {
|
| 30 |
+
"description": "Conceptual flashcards requiring critical thought",
|
| 31 |
+
"multiplier": 2.0,
|
| 32 |
+
"time_limit": 20,
|
| 33 |
+
"hints_allowed": 0,
|
| 34 |
+
},
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
# Topic Generation
|
| 38 |
+
RANDOM_TOPICS = [
|
| 39 |
+
"Artificial Intelligence",
|
| 40 |
+
"Climate Change",
|
| 41 |
+
"Space Exploration",
|
| 42 |
+
"Quantum Computing",
|
| 43 |
+
"Renaissance Art",
|
| 44 |
+
"Human Brain",
|
| 45 |
+
"Ocean Biodiversity",
|
| 46 |
+
"Ancient Egypt",
|
| 47 |
+
"Renewable Energy",
|
| 48 |
+
"Blockchain Technology",
|
| 49 |
+
"Sustainable Energy",
|
| 50 |
+
"Modern Architecture",
|
| 51 |
+
"CRISPR gene editing",
|
| 52 |
+
]
|
| 53 |
+
|
| 54 |
+
# Quiz Settings
|
| 55 |
+
QUESTIONS_PER_QUIZ = 10
|
| 56 |
+
BASE_POINTS = 100
|
| 57 |
+
|
| 58 |
+
# Badge System
|
| 59 |
+
BADGES = {
|
| 60 |
+
"beginner": {"name": "Beginner", "threshold": 100, "icon": "🌱"},
|
| 61 |
+
"learner": {"name": "Learner", "threshold": 500, "icon": "📚"},
|
| 62 |
+
"scholar": {"name": "Scholar", "threshold": 1000, "icon": "🎓"},
|
| 63 |
+
"expert": {"name": "Expert", "threshold": 2500, "icon": "🏆"},
|
| 64 |
+
"master": {"name": "Master", "threshold": 5000, "icon": "👑"},
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
# Achievement System
|
| 68 |
+
ACHIEVEMENTS = {
|
| 69 |
+
"first_quiz": {
|
| 70 |
+
"name": "First Steps",
|
| 71 |
+
"description": "Complete your first quiz",
|
| 72 |
+
"points": 50,
|
| 73 |
+
},
|
| 74 |
+
"perfect_score": {
|
| 75 |
+
"name": "Perfect!",
|
| 76 |
+
"description": "Get 100% on a quiz",
|
| 77 |
+
"points": 200,
|
| 78 |
+
},
|
| 79 |
+
"streak_5": {
|
| 80 |
+
"name": "On Fire",
|
| 81 |
+
"description": "Answer 5 questions correctly in a row",
|
| 82 |
+
"points": 150,
|
| 83 |
+
},
|
| 84 |
+
"diverse_learner": {
|
| 85 |
+
"name": "Diverse Learner",
|
| 86 |
+
"description": "Play all 3 game modes",
|
| 87 |
+
"points": 100,
|
| 88 |
+
},
|
| 89 |
+
"early_bird": {
|
| 90 |
+
"name": "Early Bird",
|
| 91 |
+
"description": "Play before 6 AM",
|
| 92 |
+
"points": 75,
|
| 93 |
+
},
|
| 94 |
+
"night_owl": {
|
| 95 |
+
"name": "Night Owl",
|
| 96 |
+
"description": "Play after midnight",
|
| 97 |
+
"points": 75,
|
| 98 |
+
},
|
| 99 |
+
"week_warrior": {
|
| 100 |
+
"name": "Week Warrior",
|
| 101 |
+
"description": "Play 7 days in a row",
|
| 102 |
+
"points": 300,
|
| 103 |
+
},
|
| 104 |
+
"century": {
|
| 105 |
+
"name": "Century",
|
| 106 |
+
"description": "Answer 100 questions",
|
| 107 |
+
"points": 500,
|
| 108 |
+
},
|
| 109 |
+
}
|
| 110 |
+
|
| 111 |
+
# Leaderboard Settings
|
| 112 |
+
LEADERBOARD_SIZE = 10
|
| 113 |
+
LEADERBOARD_UPDATE_INTERVAL = 300 # 5 minutes in seconds
|
| 114 |
+
|
| 115 |
+
# Cache Settings
|
| 116 |
+
CACHE_TIMEOUT = 3600 # 1 hour in seconds
|
| 117 |
+
MAX_CACHE_SIZE = 1000 # Maximum number of cached items
|
| 118 |
+
|
| 119 |
+
# Rate Limiting
|
| 120 |
+
API_RATE_LIMIT = 100 # requests per minute
|
| 121 |
+
USER_RATE_LIMIT = 50 # actions per minute
|
| 122 |
+
|
| 123 |
+
# Session Settings
|
| 124 |
+
SESSION_TIMEOUT = 3600 # 1 hour in seconds
|
| 125 |
+
REMEMBER_ME_DURATION = 604800 # 7 days in seconds
|
config/themes.py
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# config/themes.py
|
| 2 |
+
"""UI Themes and styling configurations"""
|
| 3 |
+
|
| 4 |
+
THEMES = {
|
| 5 |
+
"default": {
|
| 6 |
+
"primary_color": "#4CAF50",
|
| 7 |
+
"background_color": "#ffffff",
|
| 8 |
+
"secondary_background_color": "#f0f2f6",
|
| 9 |
+
"text_color": "#262730",
|
| 10 |
+
"font": "sans serif",
|
| 11 |
+
},
|
| 12 |
+
"dark": {
|
| 13 |
+
"primary_color": "#00D4FF",
|
| 14 |
+
"background_color": "#0E1117",
|
| 15 |
+
"secondary_background_color": "#262730",
|
| 16 |
+
"text_color": "#FAFAFA",
|
| 17 |
+
"font": "sans serif",
|
| 18 |
+
},
|
| 19 |
+
"ocean": {
|
| 20 |
+
"primary_color": "#006994",
|
| 21 |
+
"background_color": "#E6F3F7",
|
| 22 |
+
"secondary_background_color": "#B8E0ED",
|
| 23 |
+
"text_color": "#003D5C",
|
| 24 |
+
"font": "sans serif",
|
| 25 |
+
},
|
| 26 |
+
"sunset": {
|
| 27 |
+
"primary_color": "#FF6B6B",
|
| 28 |
+
"background_color": "#FFF5F5",
|
| 29 |
+
"secondary_background_color": "#FFE0E0",
|
| 30 |
+
"text_color": "#4A0E0E",
|
| 31 |
+
"font": "sans serif",
|
| 32 |
+
},
|
| 33 |
+
"forest": {
|
| 34 |
+
"primary_color": "#2D6A4F",
|
| 35 |
+
"background_color": "#F3FFF8",
|
| 36 |
+
"secondary_background_color": "#D8F3DC",
|
| 37 |
+
"text_color": "#1B4332",
|
| 38 |
+
"font": "sans serif",
|
| 39 |
+
},
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
MOBILE_BREAKPOINT = 768 # pixels
|
| 43 |
+
|
| 44 |
+
# Component specific styles
|
| 45 |
+
COMPONENT_STYLES = {
|
| 46 |
+
"quiz_card": {
|
| 47 |
+
"border_radius": "20px",
|
| 48 |
+
"padding": "30px",
|
| 49 |
+
"shadow": "0 8px 32px rgba(0,0,0,0.1)",
|
| 50 |
+
"transition": "all 0.3s ease",
|
| 51 |
+
},
|
| 52 |
+
"button": {
|
| 53 |
+
"border_radius": "30px",
|
| 54 |
+
"padding": "12px 24px",
|
| 55 |
+
"font_weight": "600",
|
| 56 |
+
"transition": "all 0.3s ease",
|
| 57 |
+
},
|
| 58 |
+
"stat_card": {
|
| 59 |
+
"border_radius": "16px",
|
| 60 |
+
"padding": "24px",
|
| 61 |
+
"shadow": "0 4px 20px rgba(0,0,0,0.08)",
|
| 62 |
+
},
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
# Animation settings
|
| 66 |
+
ANIMATIONS = {
|
| 67 |
+
"fade_in": {"duration": "0.5s", "timing": "ease-out"},
|
| 68 |
+
"slide_up": {"duration": "0.3s", "timing": "ease-out"},
|
| 69 |
+
"pulse": {"duration": "1s", "timing": "ease-in-out"},
|
| 70 |
+
}
|
data/.gitkeep
ADDED
|
File without changes
|
data/leaderboard.json
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"rank": 1,
|
| 4 |
+
"username": "demo_user",
|
| 5 |
+
"score": 1500,
|
| 6 |
+
"badges": 2,
|
| 7 |
+
"quizzes": 15
|
| 8 |
+
}
|
| 9 |
+
]
|
data/performance_demo_user.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"performance_history": [
|
| 3 |
+
{
|
| 4 |
+
"timestamp": "2024-01-01T10:00:00",
|
| 5 |
+
"correct": true,
|
| 6 |
+
"difficulty": "Medium",
|
| 7 |
+
"topic": "Python programming"
|
| 8 |
+
}
|
| 9 |
+
],
|
| 10 |
+
"difficulty_scores": {
|
| 11 |
+
"Easy": 0.85,
|
| 12 |
+
"Medium": 0.65,
|
| 13 |
+
"Hard": 0.45
|
| 14 |
+
},
|
| 15 |
+
"topic_performance": {
|
| 16 |
+
"Python programming": {
|
| 17 |
+
"attempts": 10,
|
| 18 |
+
"correct": 8,
|
| 19 |
+
"last_seen": "2024-01-01T10:00:00"
|
| 20 |
+
}
|
| 21 |
+
},
|
| 22 |
+
"last_updated": "2024-01-01T10:00:00"
|
| 23 |
+
}
|
data/performance_guest_1751358180.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"performance_history": [
|
| 3 |
+
{
|
| 4 |
+
"timestamp": "2025-07-01T13:53:39.067299",
|
| 5 |
+
"correct": false,
|
| 6 |
+
"difficulty": "Easy",
|
| 7 |
+
"topic": "Python (programming language)"
|
| 8 |
+
}
|
| 9 |
+
],
|
| 10 |
+
"difficulty_scores": {
|
| 11 |
+
"Easy": 0.6400000000000001,
|
| 12 |
+
"Medium": 0.5,
|
| 13 |
+
"Hard": 0.2
|
| 14 |
+
},
|
| 15 |
+
"topic_performance": {
|
| 16 |
+
"Python (programming language)": {
|
| 17 |
+
"attempts": 1,
|
| 18 |
+
"correct": 0,
|
| 19 |
+
"last_seen": "2025-07-01T13:53:39.067315"
|
| 20 |
+
}
|
| 21 |
+
},
|
| 22 |
+
"last_updated": "2025-07-01T13:53:39.068069"
|
| 23 |
+
}
|
data/performance_guest_1751358886.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"performance_history": [
|
| 3 |
+
{
|
| 4 |
+
"timestamp": "2025-07-01T14:05:37.790250",
|
| 5 |
+
"correct": false,
|
| 6 |
+
"difficulty": "Hard",
|
| 7 |
+
"topic": "Python (programming language)"
|
| 8 |
+
}
|
| 9 |
+
],
|
| 10 |
+
"difficulty_scores": {
|
| 11 |
+
"Easy": 0.8,
|
| 12 |
+
"Medium": 0.5,
|
| 13 |
+
"Hard": 0.16000000000000003
|
| 14 |
+
},
|
| 15 |
+
"topic_performance": {
|
| 16 |
+
"Python (programming language)": {
|
| 17 |
+
"attempts": 1,
|
| 18 |
+
"correct": 0,
|
| 19 |
+
"last_seen": "2025-07-01T14:05:37.790267"
|
| 20 |
+
}
|
| 21 |
+
},
|
| 22 |
+
"last_updated": "2025-07-01T14:05:37.790994"
|
| 23 |
+
}
|
data/performance_guest_1751359351.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"performance_history": [
|
| 3 |
+
{
|
| 4 |
+
"timestamp": "2025-07-01T14:13:13.633788",
|
| 5 |
+
"correct": true,
|
| 6 |
+
"difficulty": "Easy",
|
| 7 |
+
"topic": "Python (programming language)"
|
| 8 |
+
}
|
| 9 |
+
],
|
| 10 |
+
"difficulty_scores": {
|
| 11 |
+
"Easy": 0.8400000000000001,
|
| 12 |
+
"Medium": 0.5,
|
| 13 |
+
"Hard": 0.2
|
| 14 |
+
},
|
| 15 |
+
"topic_performance": {
|
| 16 |
+
"Python (programming language)": {
|
| 17 |
+
"attempts": 1,
|
| 18 |
+
"correct": 1,
|
| 19 |
+
"last_seen": "2025-07-01T14:13:13.633810"
|
| 20 |
+
}
|
| 21 |
+
},
|
| 22 |
+
"last_updated": "2025-07-01T14:13:13.634544"
|
| 23 |
+
}
|
data/performance_guest_1751359606.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"performance_history": [
|
| 3 |
+
{
|
| 4 |
+
"timestamp": "2025-07-01T14:17:07.443097",
|
| 5 |
+
"correct": true,
|
| 6 |
+
"difficulty": "Easy",
|
| 7 |
+
"topic": "Python (programming language)"
|
| 8 |
+
},
|
| 9 |
+
{
|
| 10 |
+
"timestamp": "2025-07-01T14:18:01.477018",
|
| 11 |
+
"correct": true,
|
| 12 |
+
"difficulty": "Medium",
|
| 13 |
+
"topic": "Python (programming language)"
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"timestamp": "2025-07-01T14:18:39.296459",
|
| 17 |
+
"correct": true,
|
| 18 |
+
"difficulty": "Medium",
|
| 19 |
+
"topic": "Renewable energy"
|
| 20 |
+
}
|
| 21 |
+
],
|
| 22 |
+
"difficulty_scores": {
|
| 23 |
+
"Easy": 0.8400000000000001,
|
| 24 |
+
"Medium": 0.6800000000000002,
|
| 25 |
+
"Hard": 0.2
|
| 26 |
+
},
|
| 27 |
+
"topic_performance": {
|
| 28 |
+
"Python (programming language)": {
|
| 29 |
+
"attempts": 2,
|
| 30 |
+
"correct": 2,
|
| 31 |
+
"last_seen": "2025-07-01T14:18:01.477037"
|
| 32 |
+
},
|
| 33 |
+
"Renewable energy": {
|
| 34 |
+
"attempts": 1,
|
| 35 |
+
"correct": 1,
|
| 36 |
+
"last_seen": "2025-07-01T14:18:39.296482"
|
| 37 |
+
}
|
| 38 |
+
},
|
| 39 |
+
"last_updated": "2025-07-01T14:18:39.297398"
|
| 40 |
+
}
|
data/scores_demo_user.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"total_score": 1500,
|
| 3 |
+
"quizzes_completed": 15,
|
| 4 |
+
"badges": [
|
| 5 |
+
"beginner",
|
| 6 |
+
"learner"
|
| 7 |
+
],
|
| 8 |
+
"achievements": [
|
| 9 |
+
"first_quiz",
|
| 10 |
+
"streak_5"
|
| 11 |
+
],
|
| 12 |
+
"quiz_history": [
|
| 13 |
+
{
|
| 14 |
+
"timestamp": "2024-01-01T10:00:00",
|
| 15 |
+
"mode": "MCQ Quiz",
|
| 16 |
+
"score": 8,
|
| 17 |
+
"total": 10,
|
| 18 |
+
"difficulty": "Medium",
|
| 19 |
+
"percentage": 80.0
|
| 20 |
+
}
|
| 21 |
+
],
|
| 22 |
+
"stats": {
|
| 23 |
+
"mcq": {
|
| 24 |
+
"played": 50,
|
| 25 |
+
"correct": 40
|
| 26 |
+
},
|
| 27 |
+
"flashcards": {
|
| 28 |
+
"played": 30,
|
| 29 |
+
"completed": 25
|
| 30 |
+
},
|
| 31 |
+
"facts": {
|
| 32 |
+
"played": 20,
|
| 33 |
+
"score": 18
|
| 34 |
+
}
|
| 35 |
+
},
|
| 36 |
+
"streaks": {
|
| 37 |
+
"current": 3,
|
| 38 |
+
"best": 7
|
| 39 |
+
}
|
| 40 |
+
}
|
data/scores_guest_1751358767.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"total_score": 100,
|
| 3 |
+
"quizzes_completed": 1,
|
| 4 |
+
"quiz_history": [
|
| 5 |
+
{
|
| 6 |
+
"timestamp": "2025-07-01T14:03:02.285184",
|
| 7 |
+
"mode": "Flashcards",
|
| 8 |
+
"score": 1,
|
| 9 |
+
"total": 1,
|
| 10 |
+
"difficulty": "Easy",
|
| 11 |
+
"percentage": 100.0,
|
| 12 |
+
"points_earned": 100
|
| 13 |
+
}
|
| 14 |
+
],
|
| 15 |
+
"badges": [
|
| 16 |
+
"beginner"
|
| 17 |
+
],
|
| 18 |
+
"achievements": [
|
| 19 |
+
"first_quiz"
|
| 20 |
+
],
|
| 21 |
+
"current_streak": 1,
|
| 22 |
+
"best_streak": 1
|
| 23 |
+
}
|
data/scores_guest_1751358886.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"total_score": 200,
|
| 3 |
+
"quizzes_completed": 4,
|
| 4 |
+
"quiz_history": [
|
| 5 |
+
{
|
| 6 |
+
"timestamp": "2025-07-01T14:05:27.187628",
|
| 7 |
+
"mode": "MCQ Quiz",
|
| 8 |
+
"score": 0,
|
| 9 |
+
"total": 1,
|
| 10 |
+
"difficulty": "Hard",
|
| 11 |
+
"percentage": 0.0,
|
| 12 |
+
"points_earned": 0
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"timestamp": "2025-07-01T14:06:10.710859",
|
| 16 |
+
"mode": "MCQ Quiz",
|
| 17 |
+
"score": 0,
|
| 18 |
+
"total": 1,
|
| 19 |
+
"difficulty": "Hard",
|
| 20 |
+
"percentage": 0.0,
|
| 21 |
+
"points_earned": 0
|
| 22 |
+
},
|
| 23 |
+
{
|
| 24 |
+
"timestamp": "2025-07-01T14:09:25.649410",
|
| 25 |
+
"mode": "Fact Game",
|
| 26 |
+
"score": 1,
|
| 27 |
+
"total": 1,
|
| 28 |
+
"difficulty": "Hard",
|
| 29 |
+
"percentage": 100.0,
|
| 30 |
+
"points_earned": 200
|
| 31 |
+
},
|
| 32 |
+
{
|
| 33 |
+
"timestamp": "2025-07-01T14:09:32.804563",
|
| 34 |
+
"mode": "MCQ Quiz",
|
| 35 |
+
"score": 0,
|
| 36 |
+
"total": 1,
|
| 37 |
+
"difficulty": "Hard",
|
| 38 |
+
"percentage": 0.0,
|
| 39 |
+
"points_earned": 0
|
| 40 |
+
}
|
| 41 |
+
],
|
| 42 |
+
"badges": [
|
| 43 |
+
"beginner"
|
| 44 |
+
],
|
| 45 |
+
"achievements": [
|
| 46 |
+
"first_quiz"
|
| 47 |
+
],
|
| 48 |
+
"current_streak": 0,
|
| 49 |
+
"best_streak": 1
|
| 50 |
+
}
|
data/scores_guest_1751359351.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"total_score": 100,
|
| 3 |
+
"quizzes_completed": 1,
|
| 4 |
+
"quiz_history": [
|
| 5 |
+
{
|
| 6 |
+
"timestamp": "2025-07-01T14:13:13.638678",
|
| 7 |
+
"mode": "MCQ Quiz",
|
| 8 |
+
"score": 1,
|
| 9 |
+
"total": 1,
|
| 10 |
+
"difficulty": "Easy",
|
| 11 |
+
"percentage": 100.0,
|
| 12 |
+
"points_earned": 100
|
| 13 |
+
}
|
| 14 |
+
],
|
| 15 |
+
"badges": [
|
| 16 |
+
"beginner"
|
| 17 |
+
],
|
| 18 |
+
"achievements": [
|
| 19 |
+
"first_quiz"
|
| 20 |
+
],
|
| 21 |
+
"current_streak": 1,
|
| 22 |
+
"best_streak": 1
|
| 23 |
+
}
|
data/scores_guest_1751359606.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"total_score": 400,
|
| 3 |
+
"quizzes_completed": 3,
|
| 4 |
+
"quiz_history": [
|
| 5 |
+
{
|
| 6 |
+
"timestamp": "2025-07-01T14:17:07.447968",
|
| 7 |
+
"mode": "MCQ Quiz",
|
| 8 |
+
"score": 1,
|
| 9 |
+
"total": 1,
|
| 10 |
+
"difficulty": "Easy",
|
| 11 |
+
"percentage": 100.0,
|
| 12 |
+
"points_earned": 100
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"timestamp": "2025-07-01T14:18:01.482211",
|
| 16 |
+
"mode": "MCQ Quiz",
|
| 17 |
+
"score": 1,
|
| 18 |
+
"total": 1,
|
| 19 |
+
"difficulty": "Medium",
|
| 20 |
+
"percentage": 100.0,
|
| 21 |
+
"points_earned": 150
|
| 22 |
+
},
|
| 23 |
+
{
|
| 24 |
+
"timestamp": "2025-07-01T14:18:39.301469",
|
| 25 |
+
"mode": "MCQ Quiz",
|
| 26 |
+
"score": 1,
|
| 27 |
+
"total": 1,
|
| 28 |
+
"difficulty": "Medium",
|
| 29 |
+
"percentage": 100.0,
|
| 30 |
+
"points_earned": 150
|
| 31 |
+
}
|
| 32 |
+
],
|
| 33 |
+
"badges": [
|
| 34 |
+
"beginner"
|
| 35 |
+
],
|
| 36 |
+
"achievements": [
|
| 37 |
+
"first_quiz"
|
| 38 |
+
],
|
| 39 |
+
"current_streak": 3,
|
| 40 |
+
"best_streak": 3
|
| 41 |
+
}
|
data/user_scores.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"demo_user": {
|
| 3 |
+
"total_score": 1500,
|
| 4 |
+
"quizzes_completed": 15,
|
| 5 |
+
"badges": [
|
| 6 |
+
"beginner",
|
| 7 |
+
"learner"
|
| 8 |
+
],
|
| 9 |
+
"achievements": [
|
| 10 |
+
"first_quiz",
|
| 11 |
+
"streak_5"
|
| 12 |
+
],
|
| 13 |
+
"quiz_history": [
|
| 14 |
+
{
|
| 15 |
+
"timestamp": "2024-01-01T10:00:00",
|
| 16 |
+
"mode": "MCQ Quiz",
|
| 17 |
+
"score": 8,
|
| 18 |
+
"total": 10,
|
| 19 |
+
"difficulty": "Medium",
|
| 20 |
+
"percentage": 80.0
|
| 21 |
+
}
|
| 22 |
+
],
|
| 23 |
+
"stats": {
|
| 24 |
+
"mcq": {
|
| 25 |
+
"played": 50,
|
| 26 |
+
"correct": 40
|
| 27 |
+
},
|
| 28 |
+
"flashcards": {
|
| 29 |
+
"played": 30,
|
| 30 |
+
"completed": 25
|
| 31 |
+
},
|
| 32 |
+
"facts": {
|
| 33 |
+
"played": 20,
|
| 34 |
+
"score": 18
|
| 35 |
+
}
|
| 36 |
+
},
|
| 37 |
+
"streaks": {
|
| 38 |
+
"current": 3,
|
| 39 |
+
"best": 7
|
| 40 |
+
}
|
| 41 |
+
}
|
| 42 |
+
}
|
data/users.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"demo_user": {
|
| 3 |
+
"password": "5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5",
|
| 4 |
+
"email": "demo@example.com",
|
| 5 |
+
"created": "2024-01-01T00:00:00",
|
| 6 |
+
"last_login": "2024-01-01T00:00:00"
|
| 7 |
+
},
|
| 8 |
+
"bharath": {
|
| 9 |
+
"password": "5dbbc18c570062345ef8a30609d9a110d4a6736981f3600e39bf3f96400fc529",
|
| 10 |
+
"email": "",
|
| 11 |
+
"created": "2025-07-01T14:23:16.969698",
|
| 12 |
+
"last_login": "2025-07-01T14:23:16.969713"
|
| 13 |
+
}
|
| 14 |
+
}
|