Room Lottery
Use Case: Personal Project
The Room Lottery System is a web-based application designed to help students fairly and efficiently apply for limited school housing. The system prioritizes students based on their academic and athletic status and allows administrators to manage the lottery system seamlessly. This project demonstrates the use of a full-stack PERN (PostgreSQL, Express.js, React.js, Node.js) application, offering both user and admin functionalities with a focus on scalability and responsiveness.
Backstory
I started this project in response to the inefficiencies and shortcomings of my school’s existing room allocation system, which often failed to meet the needs and expectations of students. The legacy system lacked the precision and fairness necessary to allocate rooms properly, leading to frequent errors such as students being assigned to incorrect rooms or honors students and athletes being placed in accommodations that did not reflect their earned privileges. My goal was to design and implement a solution that not only rectified these issues but also introduced a more equitable and transparent process for room allocation, ensuring that each student’s needs and achievements were properly considered in the lottery system.
Features:
- User Registration & Authentication: Secure registration and login system using JWT.
- Admin Dashboard: Allows admins to create, update, and manage room lotteries, view applicants, and select winners.
- Room Preferences: Students can specify their preferred room type (single, double, suite) when entering a lottery.
- Automated Winner Selection: Automatically selects winners based on academic and athletic status criteria.
- Multiple Room Types: Supports different room types with independent applicant limits per lottery.
- Responsive Design: Fully responsive, optimized for mobile, tablet, and desktop screens.
- Error Handling: Robust validation and error handling for smooth user experience.
Technologies Used:
- Frontend: React.js, CSS, HTML
- Backend Node.js, Express.js, PostgreSQL, Sequelize ORM
- Authentication: JWT (JSON Web Token)
- Deployment: Docker, Nginx, VPS (Virtual Private Server)
- Database: PostgreSQL with Sequelize for ORM