Features
API documentation available on Swagger or on the hosted project website
Mongoose was chosen for out-of-the-box validation and abstraction of most of the MongoDB code. Its Schemas are an interesting practice of the M (models) of an MVC system.
On the back end, the Express framework adds readability to NodeJS and makes it easy to integrate with the EJS template engine. Not only that, but the process of creating routes and controllers is very straightforward.
Due to the simplicity of the website, I used pure CSS with grid and flexbox to make it light and responsive without media queries.
Roadmap
or: what I would like to implement given more time
Add authentication methods
Clean and minimize .css and .js files
Lessons learned
This was a great practice in MVC architecture. As I began building this project, the server.js file started to become difficult to read and keep in order, and so creating separate routes and controllers for the API and page renders helped keep it neat and still open to further improvement.
Rendering a classroom using EJS while taking into account the enrollment status and user authentication was a fun challenge which would have been made much easier with front end libraries such as React.
When it comes to text, CSS `text-transform: uppercase` also directly affects the element, and so adding aria-labels to buttons might seem like extra work but cannot be skipped.
While I did choose a pre-made color theme which looked fine at first, it turned out to not generate the sufficient contrast in some elements so I had to add further customization.