Build LMS platform from scratch. Part 1 — define requirements.
I’m starting a journey to build my own Learning Management System (LMS) — not just as a project, but as a way to improve my skills and practices as a software developer.
An LMS is an educational platform where instructors can publish material, and students can access it for learning. It’s a core tool for online education, and almost everyone has used one at some point. I use LMS platforms almost daily. Right now, I’m taking an advanced SQL course on Udemy to deepen my knowledge of work.
Aaaand… it gave me the cool idea to do something similar with my own hands.
MVP Requirements
I used to dive straight into coding and figure things out as I went. Now, I’m shifting my approach — I want a full picture of the MVP before writing any code.
To start, I needed to understand what this type of platform is. So, I analyzed existing platforms like Kwiga, Udemy, and Coursera. They all offer similar core features, but some focus more on course customization, while others excel in marketing tools.
After going through these platforms, I now have an opinion for a minimal version that would cover about 80% of the essential functionality.
Business requirements
I divided the platform into two main roles: instructors and students, each with distinct functionalities.
-
Instructors can create and manage courses, upload materials, and track student progress.
-
Students can enroll in courses, watch lessons, complete assignments, and monitor their learning progress.
Instructors features:
-
View my balance and purchase history.
-
Check and update my account settings (full name, email, password, phone number).
-
Manage integrations with payment service (for MVP we need only one integration).
-
Select a specific project and view its detailed statistics (total earnings, number of courses, and student count).
-
Create new courses.
-
Browse all existing courses.
-
View and update the main course settings (status, price, public link).
-
Manage course content by adding, removing, editing, and reordering video and text materials using a drag-and-drop editor.
-
View the list of enrolled students for each course.
-
Access payment records related to my courses.
-
See a list of all projects.
-
View a course page with full details (like an individual marketing page).
-
Log in / log out using email.
Students features:
-
View all purchased and assigned courses, along with progress tracking for each.
-
Access individual courses, select specific lessons, and watch them.
-
Update account settings (full name, email, phone number, password).
-
View transaction history.
-
Log in / log out using email.
And board in JIRA to track my progress. With this setup, I can now choose the best tech stack for my app in the next article and start setting up the project.