Basalt
← All work

MindCare Wellness LMS

Live

Replacing on-site-only training with a role-based LMS on Firebase.

Next.jsFirebase

Lead with: The problem — why fully on-site training breaks down — and the role-based Firebase build that replaces it.

01

The technical problem

Training was delivered entirely on-site, so every course required students and instructors to be in the same room at the same time. That meant travel and scheduling burden for students who lived far away or had conflicting availability, no way for instructors to teach remotely, and course capacity capped by classroom size. Coordinating multiple courses through a fully in-person model also meant real staff overhead just to run the calendar, not to build the curriculum.

02

Architecture / stack

The LMS is a Next.js frontend on Firebase end to end: Firestore holds users, courses, modules, lessons, quizzes, enrollments, and progress; Firebase Authentication handles registration and login; and access is gated by role — student, instructor, admin — rather than by a separate authorization service. Course content, quiz results, and progress sync in real time through Firestore, Cloud Functions handle backend work like enrollment processing and notifications, and Firebase Storage holds course videos, images, and other uploaded files. Deployment runs through Firebase Hosting tied to the project's source-control workflow, so pushes to the connected branch roll out to the production environment directly.

03

The interesting decision

The LMS runs entirely on Firebase rather than a separate custom backend and API layer — a Node/Express service with its own database would have given more control over data modeling and business logic, but building and operating that layer wasn't worth it at this stage. Firebase already covered auth, real-time data, file storage, and serverless functions out of the box, which let the team spend its time on course management and the learning experience instead of backend infrastructure. The trade-off is real vendor lock-in and less control over query patterns and scaling than a custom backend would allow, but for the current scale that was worth trading away for faster delivery and lower ops overhead.

04

What shipped

Students can register, browse and enroll in courses, work through modules and lessons, attempt quizzes and assignments, track their own progress, and receive a completion certificate. Instructors can build courses, quizzes, and assignments, submit courses for admin approval before they go live, and monitor their own students' progress and results. Admins manage the student and instructor rosters, review and approve instructor-submitted courses, can create and manage courses and quizzes directly, and oversee progress and certificates across the platform.

MindCare admin dashboard showing students, instructors, courses, and certificate counts
MindCare admin student directory with role and approval status
MindCare admin instructor directory
MindCare admin enrollment oversight with per-student course progress
MindCare admin certificate oversight for issued credentials
MindCare admin quiz results across students
MindCare student portal notifications for enrollments and certificates
MindCare student account activity log
Next case studyBookNKhel