LMS
Education · React + Node (Express) · 25 @molecule/* packages
Canvas-like learning management system with courses, assignments, grades, and discussions — including a built-in subscription tier (Free / Pro / Team) backed by Stripe
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (11)
- Dashboard
/dashboard(signed in) - CourseDetail
/course/:courseId(signed in) - Assignments
/assignments(signed in) - Discussions
/discussions(signed in) - Gradebook
/gradebook(signed in) - Lesson
/course/:courseId/lesson/:lessonId(signed in) - Login
/login - Settings
/settings(signed in) - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password
Data model (17 tables)
- activities — id, actorId, action, resourceType, resourceId, metadata, createdAt
- activity_seen_status — userId, lastSeenActivityId, updatedAt
- assignments — id, course_id, title, description, due_date, points, type, created_at, …
- comments — id, resourceType, resourceId, userId, parentId, body, editedAt, createdAt, …
- course_modules — id, course_id, title, description, position, created_at, updated_at, updatedAt
- courses — id, instructor_id, name, description, status, published_at, archived_at, created_at, …
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- discussion_replies — id, discussion_id, author_id, content, created_at, updatedAt
- discussions — id, course_id, author_id, title, content, reply_count, created_at, updated_at, …
- enrollments — id, course_id, student_id, student_email, role, status, enrolled_at, updated_at, …
- grades — id, assignment_id, student_id, course_id, score, max_score, letter_grade, feedback, …
- module_items — id, module_id, title, type, content_id, url, position, created_at, …
- lesson_completions — id, user_id, course_id, lesson_id, completed_at
- notifications — id, createdAt, updatedAt
- resource_tags — id, tagId, resourceType, resourceId, createdAt
- submissions — id, assignment_id, student_id, content, file_url, status, submitted_at, updatedAt
- tags — id, name, slug, color, description, createdAt, updatedAt
API (10 handlers)
- \_lmsAccess
api/src/handlers/_lmsAccess.ts - assignments
api/src/handlers/assignments.ts - courses
api/src/handlers/courses.ts - discussions
api/src/handlers/discussions.ts - enrollments
api/src/handlers/enrollments.ts - grades
api/src/handlers/grades.ts - leaderboard
api/src/handlers/leaderboard.ts - modules
api/src/handlers/modules.ts - stats
api/src/handlers/stats.ts - users
api/src/handlers/users.ts
Subscription tiers
free / pro / team — gated by: maxCourses, maxStudents, maxModulesPerCourse, maxAssignments, maxStorageMb, liveClasses, certificates, advancedAnalytics, customBranding, ssoLogin
Built from 25 @molecule/* packages
@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-payments-stripe@molecule/api-permissions-custom@molecule/api-push-notifications-web-push@molecule/api-reporting-database@molecule/api-resource-activity-feed@molecule/api-resource-comment@molecule/api-resource-notification@molecule/api-resource-payment@molecule/api-resource-tag@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/api-uploads-s3@molecule/app-billing-react@molecule/app-calendar@molecule/app-command-palette@molecule/app-data-table@molecule/app-file-upload@molecule/app-kpi-card-react@molecule/app-markdown@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringS3_BUCKETS3 bucket for file uploadsMAILGUN_API_KEYMailgun API key for email notifications
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing