banao-tech commited on
Commit
f1ea97e
·
verified ·
1 Parent(s): 5125666

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +371 -19
index.html CHANGED
@@ -1,19 +1,371 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Learning Platform</title>
7
+ <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet">
8
+ <style>
9
+ :root {
10
+ --primary: #2c5282;
11
+ --secondary: #4a5568;
12
+ --accent: #3182ce;
13
+ --light-bg: #f7fafc;
14
+ --border: #e2e8f0;
15
+ }
16
+
17
+ body {
18
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
19
+ background-color: var(--light-bg);
20
+ color: #2d3748;
21
+ }
22
+
23
+ .navbar {
24
+ background-color: white;
25
+ border-bottom: 2px solid var(--border);
26
+ padding: 1rem 0;
27
+ }
28
+
29
+ .navbar-brand {
30
+ font-weight: 600;
31
+ color: var(--primary) !important;
32
+ font-size: 1.5rem;
33
+ }
34
+
35
+ .nav-tabs {
36
+ border-bottom: 2px solid var(--border);
37
+ margin-bottom: 2rem;
38
+ }
39
+
40
+ .nav-tabs .nav-link {
41
+ color: var(--secondary);
42
+ border: none;
43
+ padding: 1rem 1.5rem;
44
+ font-weight: 500;
45
+ }
46
+
47
+ .nav-tabs .nav-link.active {
48
+ color: var(--primary);
49
+ background-color: transparent;
50
+ border-bottom: 3px solid var(--primary);
51
+ }
52
+
53
+ .course-card {
54
+ background: white;
55
+ border-radius: 8px;
56
+ overflow: hidden;
57
+ box-shadow: 0 2px 4px rgba(0,0,0,0.08);
58
+ transition: transform 0.2s, box-shadow 0.2s;
59
+ margin-bottom: 1.5rem;
60
+ }
61
+
62
+ .course-card:hover {
63
+ transform: translateY(-4px);
64
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
65
+ }
66
+
67
+ .course-thumbnail {
68
+ width: 100%;
69
+ height: 200px;
70
+ background-size: cover;
71
+ background-position: center;
72
+ display: flex;
73
+ align-items: center;
74
+ justify-content: center;
75
+ position: relative;
76
+ }
77
+
78
+ .thumbnail-overlay {
79
+ position: absolute;
80
+ top: 0;
81
+ left: 0;
82
+ right: 0;
83
+ bottom: 0;
84
+ background: rgba(0, 0, 0, 0.3);
85
+ }
86
+
87
+ .play-overlay {
88
+ position: absolute;
89
+ width: 60px;
90
+ height: 60px;
91
+ background: rgba(255,255,255,0.9);
92
+ border-radius: 50%;
93
+ display: flex;
94
+ align-items: center;
95
+ justify-content: center;
96
+ cursor: pointer;
97
+ transition: transform 0.2s;
98
+ }
99
+
100
+ .play-overlay:hover {
101
+ transform: scale(1.1);
102
+ }
103
+
104
+ .play-icon {
105
+ width: 0;
106
+ height: 0;
107
+ border-left: 20px solid var(--primary);
108
+ border-top: 12px solid transparent;
109
+ border-bottom: 12px solid transparent;
110
+ margin-left: 5px;
111
+ }
112
+
113
+ .course-content {
114
+ padding: 1.5rem;
115
+ }
116
+
117
+ .course-title {
118
+ font-size: 1.25rem;
119
+ font-weight: 600;
120
+ color: var(--primary);
121
+ margin-bottom: 0.5rem;
122
+ }
123
+
124
+ .course-description {
125
+ color: var(--secondary);
126
+ font-size: 0.95rem;
127
+ margin-bottom: 1rem;
128
+ }
129
+
130
+ .course-meta {
131
+ display: flex;
132
+ gap: 1rem;
133
+ font-size: 0.875rem;
134
+ color: #718096;
135
+ }
136
+
137
+ .badge-custom {
138
+ background-color: #e6f2ff;
139
+ color: var(--primary);
140
+ padding: 0.25rem 0.75rem;
141
+ border-radius: 12px;
142
+ font-weight: 500;
143
+ }
144
+
145
+ .modal-content {
146
+ border-radius: 12px;
147
+ border: none;
148
+ }
149
+
150
+ .modal-header {
151
+ background-color: var(--primary);
152
+ color: white;
153
+ border-radius: 12px 12px 0 0;
154
+ }
155
+
156
+ .modal-body {
157
+ padding: 0;
158
+ }
159
+
160
+ video {
161
+ width: 100%;
162
+ background: black;
163
+ }
164
+
165
+ .video-info {
166
+ padding: 1.5rem;
167
+ }
168
+
169
+ .btn-primary {
170
+ background-color: var(--primary);
171
+ border-color: var(--primary);
172
+ padding: 0.5rem 1.5rem;
173
+ font-weight: 500;
174
+ }
175
+
176
+ .btn-primary:hover {
177
+ background-color: #2c4a6d;
178
+ border-color: #2c4a6d;
179
+ }
180
+ </style>
181
+ </head>
182
+ <body>
183
+ <nav class="navbar navbar-expand-lg">
184
+ <div class="container">
185
+ <a class="navbar-brand" href="#">🎓 LearnHub</a>
186
+ <div class="ms-auto">
187
+ <span class="navbar-text">Welcome, User</span>
188
+ </div>
189
+ </div>
190
+ </nav>
191
+
192
+ <div class="container mt-4">
193
+ <ul class="nav nav-tabs" id="courseTabs" role="tablist">
194
+ <li class="nav-item" role="presentation">
195
+ <button class="nav-link active" id="base-tab" data-bs-toggle="tab" data-bs-target="#base-courses" type="button">
196
+ Base Courses
197
+ </button>
198
+ </li>
199
+ <li class="nav-item" role="presentation">
200
+ <button class="nav-link" id="personalized-tab" data-bs-toggle="tab" data-bs-target="#personalized-courses" type="button">
201
+ Personalized Courses
202
+ </button>
203
+ </li>
204
+ </ul>
205
+
206
+ <div class="tab-content" id="courseTabContent">
207
+ <div class="tab-pane fade show active" id="base-courses">
208
+ <div class="row" id="baseCoursesList"></div>
209
+ </div>
210
+ <div class="tab-pane fade" id="personalized-courses">
211
+ <div class="row" id="personalizedCoursesList"></div>
212
+ </div>
213
+ </div>
214
+ </div>
215
+
216
+ <!-- Video Modal -->
217
+ <div class="modal fade" id="videoModal" tabindex="-1">
218
+ <div class="modal-dialog modal-lg modal-dialog-centered">
219
+ <div class="modal-content">
220
+ <div class="modal-header">
221
+ <h5 class="modal-title" id="videoModalTitle">Course Video</h5>
222
+ <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
223
+ </div>
224
+ <div class="modal-body">
225
+ <video id="videoPlayer" controls>
226
+ <source id="videoSource" src="" type="video/mp4">
227
+ Your browser does not support the video tag.
228
+ </video>
229
+ <div class="video-info">
230
+ <h6 id="videoDescription"></h6>
231
+ </div>
232
+ </div>
233
+ </div>
234
+ </div>
235
+ </div>
236
+
237
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/js/bootstrap.bundle.min.js"></script>
238
+ <script>
239
+ // Simulated backend data with S3-like URLs
240
+ const coursesData = {
241
+ base: [
242
+ {
243
+ id: 1,
244
+ title: "Data Structure- List, Tuple, Set, Dictionary",
245
+ description: "Learn the fundamentals of Data Structure- List, Tuple, Set, Dictionary",
246
+ duration: "07 Min",
247
+ videos: 1,
248
+ thumbnail: "https://tech-learn-state.s3.ap-south-1.amazonaws.com/video_states/thumbnail/1stss.png",
249
+ s3Url: "https://tech-learn-state.s3.ap-south-1.amazonaws.com/video_states/AI_1_3/final_video/final_assembly_video.mp4"
250
+ },
251
+ {
252
+ id: 2,
253
+ title: "Python Programming Basics",
254
+ description: "Master the basics of Python programming language",
255
+ duration: "3:15 Min",
256
+ videos: 1,
257
+ thumbnail: "https://tech-learn-state.s3.ap-south-1.amazonaws.com/video_states/thumbnail/Screenshot+2025-12-19+160253.png",
258
+ s3Url: "https://tech-learn-state.s3.ap-south-1.amazonaws.com/video_states/AI_5_3/final_video/final_assembly_video.mp4"
259
+ },
260
+ {
261
+ id: 3,
262
+ title: "Database Fundamentals",
263
+ description: "Understanding SQL and database design principles",
264
+ duration: "2:45 Min",
265
+ videos: 1,
266
+ thumbnail: "https://tech-learn-state.s3.ap-south-1.amazonaws.com/video_states/thumbnail/Screenshot+2025-12-19+160538.png",
267
+ s3Url: "https://tech-learn-state.s3.ap-south-1.amazonaws.com/video_states/sys_design_whatsapp/system_design/Hindi/slide_video.mp4"
268
+ },
269
+ {
270
+ id: 4,
271
+ title: "UI/UX Design Principles",
272
+ description: "Learn to create beautiful and functional user interfaces",
273
+ duration: "3:34 Min",
274
+ videos: 1,
275
+ thumbnail: "https://tech-learn-state.s3.ap-south-1.amazonaws.com/video_states/thumbnail/Screenshot+2025-12-19+161038.png",
276
+ s3Url: "https://tech-learn-state.s3.ap-south-1.amazonaws.com/video_states/sys_class_diagram/system_design/english/slide_video.mp4"
277
+ }
278
+ ],
279
+ personalized: [
280
+ {
281
+ id: 101,
282
+ title: "Advanced JavaScript Patterns",
283
+ description: "Deep dive into modern JavaScript design patterns",
284
+ duration: "4:20 Min",
285
+ videos: 1,
286
+ thumbnail: "https://tech-learn-state.s3.ap-south-1.amazonaws.com/video_states/thumbnail/Screenshot+2025-12-19+161923.png",
287
+ s3Url: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4"
288
+ },
289
+ {
290
+ id: 102,
291
+ title: "React Development Masterclass",
292
+ description: "Build modern web applications with React",
293
+ duration: "5:30 Min",
294
+ videos: 1,
295
+ thumbnail: "https://images.unsplash.com/photo-1633356122544-f134324a6cee?w=800&h=400&fit=crop",
296
+ s3Url: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerJoyrides.mp4"
297
+ },
298
+ {
299
+ id: 103,
300
+ title: "Cloud Architecture AWS",
301
+ description: "Design scalable cloud solutions on Amazon Web Services",
302
+ duration: "4:00 Min",
303
+ videos: 1,
304
+ thumbnail: "https://tech-learn-state.s3.ap-south-1.amazonaws.com/video_states/thumbnail/Screenshot+2025-12-19+162432.png",
305
+ s3Url: "https://tech-learn-state.s3.ap-south-1.amazonaws.com/video_states/thumbnail/personalized_topic_10808.mp4"
306
+ }
307
+ ]
308
+ };
309
+
310
+ function createCourseCard(course) {
311
+ return `
312
+ <div class="col-md-6 col-lg-4">
313
+ <div class="course-card">
314
+ <div class="course-thumbnail" style="background-image: url('${course.thumbnail}')">
315
+ <div class="thumbnail-overlay"></div>
316
+ <div class="play-overlay" onclick="playVideo('${course.s3Url}', '${course.title}', '${course.description}')">
317
+ <div class="play-icon"></div>
318
+ </div>
319
+ </div>
320
+ <div class="course-content">
321
+ <h5 class="course-title">${course.title}</h5>
322
+ <p class="course-description">${course.description}</p>
323
+ <div class="course-meta">
324
+ <span class="badge-custom">${course.videos} videos</span>
325
+ <span class="badge-custom">${course.duration}</span>
326
+ </div>
327
+ </div>
328
+ </div>
329
+ </div>
330
+ `;
331
+ }
332
+
333
+ function renderCourses() {
334
+ const baseCoursesList = document.getElementById('baseCoursesList');
335
+ const personalizedCoursesList = document.getElementById('personalizedCoursesList');
336
+
337
+ baseCoursesList.innerHTML = coursesData.base.map(createCourseCard).join('');
338
+ personalizedCoursesList.innerHTML = coursesData.personalized.map(createCourseCard).join('');
339
+ }
340
+
341
+ function playVideo(s3Url, title, description) {
342
+ const videoSource = document.getElementById('videoSource');
343
+ const videoPlayer = document.getElementById('videoPlayer');
344
+ const modalTitle = document.getElementById('videoModalTitle');
345
+ const videoDescription = document.getElementById('videoDescription');
346
+
347
+ videoSource.src = s3Url;
348
+ modalTitle.textContent = title;
349
+ videoDescription.textContent = description;
350
+
351
+ videoPlayer.load();
352
+
353
+ const modal = new bootstrap.Modal(document.getElementById('videoModal'));
354
+ modal.show();
355
+
356
+ // Play video when modal is fully shown
357
+ document.getElementById('videoModal').addEventListener('shown.bs.modal', function () {
358
+ videoPlayer.play();
359
+ });
360
+
361
+ // Pause video when modal is closed
362
+ document.getElementById('videoModal').addEventListener('hidden.bs.modal', function () {
363
+ videoPlayer.pause();
364
+ });
365
+ }
366
+
367
+ // Initialize courses on page load
368
+ document.addEventListener('DOMContentLoaded', renderCourses);
369
+ </script>
370
+ </body>
371
+ </html>