Bharath370 commited on
Commit
9e1fcba
·
verified ·
1 Parent(s): 86f29f3

Upload 21 files

Browse files
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
+ }