St. Francis’ High School required a rapid development project of an LMS system that is catered to their needs as an educational institute. Moodle and other pre-built LMS’ were already discarded as an option.
An MVP needed to be delivered in under 48 hours.
The school had already provided students with username and password pairs, we needed to import this information into our production server as quickly as possible along with finishing an MVP so that the students would be able to log into their accounts and view their lectures.
It should be noted that lectures for all the classes needed to be uploaded before the deadline as well, thankfully the school had their staff available to assist with both the data-entry, as well as the content uploads.
After the initial MVP was successfully delivered, we now needed to implement a system where students could ask questions from the teachers, the teachers could answer back, upload lecture attachments, issue notices to the students, along with a system where St. Francis’ High School would be able to enable or disable student accounts in bulk based on whether or not they have cleared their dues.
With 40,000 monthly sessions, high bandwidth video delivery and a smooth experience for the students, we’d consider this project a success.
Technologies that made it possible
We used our standard stack to make everything happen.
Django & Django Templates
The natively robust authentication system allowed us to quickly set up a view where the school’s staff could upload a CSV file with the credentials they provided to the students. The server would then create user accounts for the students.
Django’s built in administration dashboard was used to upload lectures while work on the frontend was in progress. Since we did not have the time to completely separate the frontend and backends, we used Vue CDN wherever necessary powered by an API built with Django REST Framework.
Self-explanatory, it’s recommended by Django and has pretty much anything you could ever ask for from a relational database.
Vue was exclusively used as a CDN in this project to provide interactivity wherever it was needed. It was used to build a randomized MCQ test, the teacher-student query system, and it was used to manage the administration-side of the student notices system.
This is pretty self explanatory, Nginx ensures that traffic only goes to places where we want it to go, controlling which requests are sent to the media files and which are passed through to Gunicorn & Django. Pretty much allowing us to run & store everything on a single server.
Even though we did not use Vue as a frontend, Docker is still an essential part of our delivery workflow that simply can not be replaced by anything.
CI & CD
This is a department we could have improved in during this project, an automated build process would have saved us a lifetime of deploying our updates to the server manually, however due to the deadlines in effect, we lacked tests in this project and a CI/CD workflow without reliable tests to back yourself up? That is just asking for trouble.