Building a WEB3 EdX LMS in 28 hours
90% of people who buy MOOC courses on Coursera and Udemy are not finishing them. Inspired by StepN and Commit Club, this document contains a Technical Product Requirement Document (PRD) for building the gamified courses marketplace to help creators solve the issue of student engagement and low course completion rate.
Vision
We are prioritizing the speed of the launching course over the customization. All course certificates will be generated by the platform and minted as Polygon NFTs. All the accountability money will be stored in the single ERC20 token of a platform.
To simplify user adoption we are not going to disrupt the industry by proposing students change their learning habits and it means we have to follow existing processes for learning. For such a model synchronous cohort-based course will be perfect, but as we are building a clone of Coursera - it will be async self-paced courses.
Features
We are iterating over the existing course model and not creating the new one, so we are going to utilize the MOOC course schema
MOOC course creator. Teachers have to have the ability to create and publish courses right on the platform.
MOOC importer. Existing course creators have to have the ability to import their existing courses into the platform.
Courses marketplace. Students have to have the ability to view available courses and enroll in them.
LMS. Students and teachers have to be able to communicate during the learning process.
Gamification. Students have to be able to get a 100% refund in case of successful course completion using crypto tokens.
User flows from 1 to 4 are pretty complex but greatly defined by existing products so there is no need for reinventing them. However, feature 5 is bringing an innovation that has to be documented in user flows to guarantee smooth UX.
Users will be asked to connect their wallet once the course was bought. At this moment the system will reserve an equivalent amount of ERC20 tokens to the price client paid for the course. After each assignment students will be getting a score. Based on this score and the score of the final exam students will get refunded using platform tokens. If he completed everything on time and with 100% correctness - he will get a certificate and a 100% refund.
Boilerplates
It doesn't make sense to build the LMS and MOOC-related features from scratch, so our dev plan would be to get an open-source product that supports most of the features we need, renovate the UI and add support for the WEB3.
The 2 main alternatives were Moodle LMS and Open MOOC from EdX. Due to a better technological fit and a bigger community, EdX was selected. It supports all the features (except web3) that we need for our platform. Moreover, it is natively working with MOOCs and can tap into the bigger ecosystem of Open MOOCs
Link to the GitHub - https://github.com/openedx/edx-platform Link to preview - https://sandbox.openedx.org
Development timelines
The main development challenge would be to make changes, without disrupting the current system so that we can constantly update the code base with new changes from the open-source project. Instead of modifying existing code, I would write an additional microservice that can also be transformed into a SaaS product to gamify the whole EdX ecosystem.
Milestones:
- Set up basic EdX infrastructure using open-source projects. EdX has a pretty comprehensive guide so the installation shouldn't take more than 8 hours.
- Set up a WEB3 microservice with smart contracts. We can take pretty default ERC721 smart contract and open source marketplace from Decentralend. Wr can also take a default ERC20 smart contract definition and utilize Uniswap functionality to allow users exchange tokens. This Milestone is more complex but it will take about 12 hours of experienced blockchain engineer.
- Integrate WEB3 service into EdX infrastructure. As the last milestone, we combine 2 of our solutions into a single unique product. It will take about 8 hours to integrate and test the final product.
An experienced developer can build such an app in 28 hours. The first working version of the product can be built for under $2000.
Technologies
Frontend - React
TypeScript will allow us to avoid the bus factor and grow the dev team without being scared of bugs. React is already an industry standard for writing DAPPs, it has a lot of web3 boilerplates and is a great library for this use case.
The open-source LMS we have selected as a basic product has an open-source react UI. We would need to make small WEB3-related adjustments to the UI though.
Backend - TypeScript/Nest.js & Python/Django
Due to the microservice infrastructure, we decided to implement we will have 2 different services in 2 languages. Open source EdX backend is utilizing Python Django and rewriting it will take too much time so we were forced to commit to Django. However, python is not the best language for WEB3 microservice which is why we also have Nest.js. Ethers and web3.js are amazing libraries that will allow us to quickly integrate WEB3 into the backend.
Database - PostgreSQL
Basic EdX components are using pre-defined databases like MySQL, Memcache, and Mongo. We wanna make our microservice as separate as possible so we gonna create our own DB. PostgreSQL was our choice just because it is an industry-standard. There is no hard requirements for the DB, and we will not have a high load, so any option would work actually.
Smart contracts
Our app is going to utilize Polygon to build a WEB3 infra. We do not wanna pay fees for minting certificates and we wanna minimize fees for transferring tokens back to customers, so Polygon is the best option for us.
For certificates, we are going to utilize the ERC-721 standard with a very default implementation. For play-to-earn mechanics, we would need a virtual currency that will be created using the ERC20 standard.
Ideally, we have to implement play to earn token distribution inside of a smart contract, but due to time limits, we gonna do it on the backend side. However, it always can be moved on-chain.
Future roadmap
This MVP is just the beginning of the long product journey. Some obvious product extensions may include:
- Synced cohorts. Converting MOOCs into cohort-based courses.
- Learning pools. Instead of everyone having the ability to get a 100% refund by completing the course, only the top 10% will get a 100% refund. It is a kinda post-mortem WEB3 version of the scholarship
- Learning roadmaps. Finishing one course opens your access to another course.
Put ❤️ emoji if you would use this product and type into a comment what features would you add right after the first release.
Subscribe to my newsletter
Read articles from Yev Rachkovan directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Yev Rachkovan
Yev Rachkovan
I have been coding all my life, which might be described as "a proven track record" or "delivering consistent results" on LinkedIn. I am currently on a mission to enslave humanity with the power of gamification so don't disturb me if it is not a question of civilisation importance. My skills include writing, re-writing, tweeting, startup founding, mixing cocktails, full-stack engineering and watching the same isekai over and over again. Proficiency ranges from excellent to absolutely awful.