Fast and student-friendly electives management system for Bodindecha (Sing Singhaseni) 2 School.
This project aims to improve the existing Electives system at Bodindecha (Sing Singhaseni) 2 School. Providing a fast and student-friendly interface for students to view available subjects, see their details, and make selections.
The previous system incredibly slow, being server-rendered by PHP on a mid-end server. This caused frequent timeouts and freezes when thousands of students tried to access the system at the same time.
There are also other issues, such as students not being to view details of subjects before the registration period, or overbooking, needing manual intervention from teachers to resolve such conflicts, or UX issues like students needing to refresh to view latest information, or needing to input credentials during high server load.
- Using Ktor allows us to ergonomically create a server that can handle high loads of traffic in a short amount of time.
- Protocol Buffers provide a compact binary format for data exchange, making it efficient to send and receive data between the server and clients.
- SQLite allows us to manage data efficiently, ensuring that data is stored and retrieved quickly.
We are using SQLite JDBC with JetBrains Exposed, which binds fully-typed database schemas and data-access-objects to a high-performance native SQLite3 binding. - WebSockets allow students and teachers to get up-to-date information without needing to refresh.
- Built with SolidStart, fully client-sided. We provide a small-sized, responsive, and interactive user interface for students to view and select subjects easier and faster.
Being fully client-sided also means the frontend can be fully cached through services like Cloudflare to prevent downtime from too many requests hitting the server at once!
Serving content manually was one of the bottlenecks with the previous system, so we intend to serve the frontend through Cloudflare instead, which should fix slow loads on clients.
Please refer to SECURITY.md.
Please refer to CONTRIBUTING.md.
This project is licensed under CC BY-NC-SA 4.0.