Skip to content

Fast and student-friendly electives management solution for Bodindecha (Sing Singhaseni) 2 School.

License

Notifications You must be signed in to change notification settings

bodin2/electives

Repository files navigation

Bodindecha 2 Electives

Fast and student-friendly electives management system for Bodindecha (Sing Singhaseni) 2 School.

Why?

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.

Issues with the previous system

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.

How are we solving it?

Backend

  • 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.

Frontend

  • 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.

Security policy

Please refer to SECURITY.md.

Contributing

Please refer to CONTRIBUTING.md.

License

This project is licensed under CC BY-NC-SA 4.0.

About

Fast and student-friendly electives management solution for Bodindecha (Sing Singhaseni) 2 School.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published