Quiz Platform
Education · React + Node (Express) · 20 @molecule/* packages
Kahoot-like quiz platform with timed questions, scoring, and leaderboards — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (16)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Discover
/discover(signed in) - QuizPlay
/quiz/:id/play(signed in) - QuizBuilder
/quiz/:id/edit(signed in) - MyQuizzes
/my-quizzes(signed in) - Results
/quiz/:id/results(signed in) - Leaderboard
/leaderboard(signed in) - Settings
/settings(signed in) - QuizDetail
/quiz/:id(signed in) - HostLobby
/quiz/:id/lobby(signed in) - Profile
/u/:username(signed in) - Notifications
/notifications(signed in)
Data model (11 tables)
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
- notifications — id, user_id, type, title, body, href, read, created_at
- questions — id, quiz_id, position, type, prompt, choices, correct_answer, points, …
- quiz_sessions — id, quiz_id, host_id, join_code, status, current_question, started_at, finished_at, …
- quizzes — id, creator_id, title, description, category, status, cover_url, time_per_question_s, …
- reactions — id, resourceType, resourceId, userId, type, createdAt, updatedAt
- resource_tags — id, tagId, resourceType, resourceId, createdAt
- session_answers — id, session_id, user_id, question_id, answer, time_taken_ms, is_correct, points_earned, …
- session_participants — id, session_id, user_id, nickname, score, joined_at, created_at
- tags — id, name, slug, color, description, createdAt, updatedAt
API (6 handlers)
- \_seed
api/src/handlers/_seed.ts - leaderboard
api/src/handlers/leaderboard.ts - notifications
api/src/handlers/notifications.ts - questions
api/src/handlers/questions.ts - quizzes
api/src/handlers/quizzes.ts - sessions
api/src/handlers/sessions.ts
Subscription tiers
free / pro / team — gated by: maxLeaderboard, maxQuestions, maxQuizzes, maxSessions, advancedFeatures, canExport, retentionDays
Built from 20 @molecule/* packages
@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-image-sharp@molecule/api-payments-stripe@molecule/api-realtime-socketio@molecule/api-reporting-database@molecule/api-resource-payment@molecule/api-resource-reaction@molecule/api-resource-tag@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/api-uploads-s3@molecule/app-billing-react@molecule/app-command-palette@molecule/app-data-table@molecule/app-realtime-socketio@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringS3_BUCKETS3 bucket for quiz images
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing