-
-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathindex.html
More file actions
412 lines (389 loc) · 16.4 KB
/
index.html
File metadata and controls
412 lines (389 loc) · 16.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=yes" />
<!-- Primary Meta Tags -->
<title>Studorama - Free AI-Powered Study Sessions | Smart Learning Platform</title>
<meta name="title" content="Studorama - Free AI-Powered Study Sessions | Smart Learning Platform" />
<meta name="description" content="Transform your learning with Studorama's free AI-powered study sessions. Generate personalized questions, track progress, and master any subject with intelligent feedback. No account required - start studying instantly!" />
<meta name="keywords" content="AI study app, free learning platform, study sessions, OpenAI education, quiz generator, personalized learning, study assistant, spaced repetition, learning techniques, make it stick, retrieval practice, no account required, privacy first learning, estudo com IA, plataforma de aprendizado gratuita, sessões de estudo, educação OpenAI, gerador de quiz, aprendizado personalizado, assistente de estudo, repetição espaçada, técnicas de aprendizado" />
<meta name="author" content="oluiscabral" />
<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
<meta name="language" content="English" />
<meta name="revisit-after" content="7 days" />
<meta name="distribution" content="global" />
<meta name="rating" content="general" />
<meta name="copyright" content="© 2024 Studorama" />
<!-- Geo Tags -->
<meta name="geo.region" content="US" />
<meta name="geo.placename" content="United States" />
<meta name="geo.region" content="BR" />
<meta name="geo.placename" content="Brazil" />
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website" />
<meta property="og:url" content="https://www.studorama.com/" />
<meta property="og:title" content="Studorama - Free AI-Powered Study Sessions | Smart Learning Platform" />
<meta property="og:description" content="Transform your learning with free AI-powered study sessions. Generate personalized questions, track progress, and master any subject. No account required - start studying instantly!" />
<meta property="og:image" content="https://www.studorama.com/og-image.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Studorama - AI-Powered Study Sessions Platform" />
<meta property="og:site_name" content="Studorama" />
<meta property="og:locale" content="en_US" />
<meta property="og:locale:alternate" content="pt_BR" />
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@studorama" />
<meta name="twitter:creator" content="@oluiscabral" />
<meta name="twitter:url" content="https://www.studorama.com/" />
<meta name="twitter:title" content="Studorama - Free AI-Powered Study Sessions" />
<meta name="twitter:description" content="Transform your learning with free AI-powered study sessions. Generate personalized questions and track your progress. No account required!" />
<meta name="twitter:image" content="https://www.studorama.com/twitter-image.png" />
<meta name="twitter:image:alt" content="Studorama - AI-Powered Study Sessions Platform" />
<!-- Additional SEO -->
<link rel="canonical" href="https://www.studorama.com/" />
<meta name="theme-color" content="#ea580c" />
<meta name="msapplication-TileColor" content="#ea580c" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-title" content="Studorama" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="application-name" content="Studorama" />
<!-- Preconnect to external domains -->
<link rel="preconnect" href="https://api.openai.com" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<!-- DNS Prefetch -->
<link rel="dns-prefetch" href="//api.openai.com" />
<link rel="dns-prefetch" href="//www.google-analytics.com" />
<!-- Alternate Language Pages -->
<link rel="alternate" hreflang="en" href="https://www.studorama.com/" />
<link rel="alternate" hreflang="pt-BR" href="https://www.studorama.com/?lang=pt-BR" />
<link rel="alternate" hreflang="x-default" href="https://www.studorama.com/" />
<!-- Structured Data - Organization -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Studorama",
"url": "https://www.studorama.com",
"logo": "https://www.studorama.com/logo.png",
"description": "Free AI-powered study sessions platform for personalized learning",
"foundingDate": "2024",
"founder": {
"@type": "Person",
"name": "oluiscabral",
"url": "https://github.com/oluiscabral"
},
"sameAs": [
"https://github.com/oluiscabral/studorama",
"https://www.linkedin.com/in/oluiscabral"
],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer service",
"availableLanguage": ["English", "Portuguese"]
}
}
</script>
<!-- Structured Data - WebApplication -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "Studorama",
"description": "Free AI-powered study sessions platform with spaced repetition, interleaving, and proven learning techniques. No account required.",
"url": "https://www.studorama.com/",
"applicationCategory": "EducationalApplication",
"operatingSystem": "Web Browser",
"browserRequirements": "Requires JavaScript. Supports Chrome, Firefox, Safari, Edge.",
"softwareVersion": "2.6.3",
"datePublished": "2024-01-01",
"dateModified": "2024-12-20",
"author": {
"@type": "Person",
"name": "oluiscabral",
"url": "https://github.com/oluiscabral"
},
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"ratingCount": "150",
"bestRating": "5",
"worstRating": "1"
},
"featureList": [
"AI-generated study questions",
"Multiple choice and dissertative questions",
"Spaced repetition scheduling",
"Learning progress tracking",
"No account required",
"Privacy-first design",
"Multilingual support (English, Portuguese)",
"Open source",
"Free forever",
"Mobile responsive design",
"Offline capable",
"Mathematical expression support"
],
"inLanguage": ["en", "pt-BR"],
"availableOnDevice": ["Desktop", "Mobile", "Tablet"]
}
</script>
<!-- Structured Data - Educational Organization -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "EducationalOrganization",
"name": "Studorama",
"url": "https://www.studorama.com",
"description": "Free AI-powered study platform implementing research-based learning techniques",
"educationalCredentialAwarded": "Study Progress Tracking",
"hasCredential": {
"@type": "EducationalOccupationalCredential",
"name": "Learning Progress Certificate",
"description": "Track your learning progress across multiple subjects"
},
"teaches": [
"JavaScript", "Python", "Mathematics", "Physics", "Chemistry", "Biology",
"History", "Literature", "Computer Science", "Engineering", "Medicine",
"Business", "Economics", "Psychology", "Philosophy", "Languages"
]
}
</script>
<!-- Structured Data - SoftwareApplication -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Studorama",
"description": "Free AI-powered study sessions with spaced repetition and proven learning techniques",
"url": "https://www.studorama.com",
"applicationCategory": "Education",
"operatingSystem": "Web",
"permissions": "No special permissions required",
"price": "0",
"priceCurrency": "USD",
"screenshot": "https://www.studorama.com/screenshot.png",
"softwareVersion": "2.6.3",
"datePublished": "2024-01-01",
"publisher": {
"@type": "Person",
"name": "oluiscabral"
},
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"downloadUrl": "https://www.studorama.com",
"installUrl": "https://www.studorama.com",
"memoryRequirements": "512MB",
"storageRequirements": "10MB"
}
</script>
<!-- Structured Data - FAQ -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Is Studorama really free?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes! Studorama is completely free to use and always will be. All features including AI-powered questions, spaced repetition, and progress tracking are available at no cost. No account required."
}
},
{
"@type": "Question",
"name": "Do I need to create an account?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No account required! Studorama works completely without registration. Your study sessions are saved locally in your browser, ensuring complete privacy."
}
},
{
"@type": "Question",
"name": "What learning techniques does Studorama use?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Studorama implements research-based learning techniques from 'Make It Stick' including spaced repetition, interleaving, elaborative interrogation, retrieval practice, and desirable difficulties."
}
},
{
"@type": "Question",
"name": "How does the AI generate questions?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Studorama uses OpenAI's GPT models to generate personalized study questions. You provide your own OpenAI API key, ensuring your data stays private and you have full control."
}
},
{
"@type": "Question",
"name": "Is my data private and secure?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Absolutely! Your API key and study data are stored locally in your browser and never transmitted to our servers. Only you have access to your study sessions and progress."
}
},
{
"@type": "Question",
"name": "Does Studorama work on mobile devices?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes! Studorama is fully responsive and works perfectly on all devices including smartphones, tablets, and desktop computers. The interface adapts to your screen size for optimal usability."
}
},
{
"@type": "Question",
"name": "What languages does Studorama support?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Studorama supports English and Portuguese (Brazil). You can switch languages anytime in the settings, and the AI will generate questions in your preferred language."
}
}
]
}
</script>
<!-- Structured Data - BreadcrumbList -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.studorama.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Study Sessions",
"item": "https://www.studorama.com/study"
},
{
"@type": "ListItem",
"position": 3,
"name": "Study History",
"item": "https://www.studorama.com/history"
},
{
"@type": "ListItem",
"position": 4,
"name": "Settings",
"item": "https://www.studorama.com/settings"
}
]
}
</script>
<!-- PWA Support -->
<link rel="manifest" href="/manifest.json" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<!-- Critical CSS for above-the-fold content -->
<style>
/* Critical CSS for immediate rendering */
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
background: linear-gradient(135deg, #fff7ed 0%, #ffffff 50%, #fff7ed 100%);
min-height: 100vh;
}
#root {
min-height: 100vh;
}
/* Loading state */
.loading-spinner {
display: inline-block;
width: 20px;
height: 20px;
border: 3px solid #f3f3f3;
border-top: 3px solid #ea580c;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* Responsive utilities */
@media (max-width: 640px) {
body {
font-size: 14px;
}
}
/* High contrast mode support */
@media (prefers-contrast: high) {
body {
background: #ffffff;
}
}
/* Reduced motion support */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
</style>
</head>
<body>
<div id="root">
<!-- Loading fallback -->
<div style="display: flex; align-items: center; justify-content: center; min-height: 100vh; flex-direction: column;">
<div class="loading-spinner"></div>
<p style="margin-top: 16px; color: #6b7280;">Loading Studorama...</p>
</div>
</div>
<script type="module" src="/src/main.tsx"></script>
<!-- Optimized Service Worker Registration -->
<script>
// Register service worker only after the page has loaded to avoid blocking
window.addEventListener('load', function() {
if ('serviceWorker' in navigator) {
// Use requestIdleCallback to register SW when browser is idle
if ('requestIdleCallback' in window) {
requestIdleCallback(function() {
navigator.serviceWorker.register('/sw.js')
.then(function(registration) {
console.log('SW registered: ', registration);
})
.catch(function(registrationError) {
console.log('SW registration failed: ', registrationError);
});
});
} else {
// Fallback for browsers without requestIdleCallback
setTimeout(function() {
navigator.serviceWorker.register('/sw.js')
.then(function(registration) {
console.log('SW registered: ', registration);
})
.catch(function(registrationError) {
console.log('SW registration failed: ', registrationError);
});
}, 1000);
}
}
});
</script>
</body>
</html>