<aside>
💡 This is not a full-blown Technical Document, but rather in my own words a small overview of what went behind in making the Wonder Learning LMS website. If you have a question or want to know more, reach out to me at [email protected] as always.
</aside>
🗨️ Overview
Wonder Learning provides services to schools. This was their Learning Management Platform where to onboarded schools will have a completely digital workflow. School management can deal with inquiries, students, and fees online. Teachers were also keeping homework, attendance, etc. Parents were using an app developed
Software Stack |
|
Frontend |
Bootstrap, Orchid |
Serverside |
Laravel, Orchid |
Database |
MySQL |
Versioning/Management |
Git and GitHub |
Package Management |
Composer |
Server |
Nginx |
Hardware Stack |
|
CPU |
2 vCPU |
RAM |
2 GB DDR4 |
Storage |
40 GB NVME SSD |
OS |
Ubuntu 20.04 |
<aside>
💡
Wonder Learning has been entirely hosted using 2 vCPU VPS handles all the schools registered to it are extremely great.
</aside>
🛡️ Why this stack?
Before I start describing the application and process, Here is the reason why all the above choices in the stack were made.
- Laravel: I’ve been using Laravel for a while when I started working on this project, after listening to the requirements I understood how large this project was and Laravel was the choice of the framework due to how great it can handle large applications. I needed an ORM, REST API manipulations, and more which Laravel not only provided but had great developer experience around it.
- Bootstrap: Even in 2019 this seems like an odd choice but I’ve been using Bootstrap since the V3 beta and I was familiar with it a lot. It helped me quickly architect the frontend. In my opinion, if you’re a person who cares for speed of development and mature-looking design set over fine grain control over design, Bootstrap is one of the best choices. In 2023 I moved to Tailwind and even if given a choice today I would have preferred Tailwind.
- **Orchid:** Orchid is a Laravel package that uses Route, Model, and Screen approach to handle data-heavy business application code. ****All the screens can be described using PHP code rather than strung together HTML. Division of logic is stricter than the usual MVC pattern. I was interested in this new pattern and decided to use it. About 90% of the time I would say it turned out good as it helped me to write this Dashboard Heavy App pretty fast.
- MariaDB/MySQL: Considering entire application needs can be entirely modeled using Relational Model. MySQL is just simply a widely available and mature choice. Even in 2023 goto choice for DB is always MySQL unless I need to do something that is hugely niche like storing vector embeddings, etc.
- Git: Every programmer from the beginning MUST use version control and preferably git. I can not count how many times it helped to quickly implement a feature on one branch and discard it if I did not like it. I also upgraded the whole Laravel version, and Orchid Version on one branch with Wonder Learning without affecting the Prod branch and once it was all done merged it back to prod everything without breaking a sweat.
- As for server hardware, I’m simply being pragmatic. Wonder Learning is an emerging startup and should focus on bringing on the users and not thinking about complex architecture around scaling unless it needs it etc. A simple VPS server alongside Nginx is what keeps costs low until they need to scale up. This should be enough for thousands of users. Once they actually grow to size then they can move to the environment like AWS.