RosterReady

RosterReady was created to simplify and automate conflict-free schedules tailored to business needs. The applications core functionally implemented Constraint Satisfaction Problem (CSP) solver to create solutions based on the business' shifts, employees and rules. These rules included skill based shifts, and availability of employees which could be requested and accepted by the employer in real-time. Other rules were applied to satisfy employment laws in Ireland, including gaps between shifts and maximum working hours per week.
To view the result of the project please click on "Link" URL at the bottom of the page.

Overview
Schedule Generation
Real-Time Availability
Thumbnail
Calendar View
RosterReady Objectives

Core Functionality:
Creating a CSP algorithm to generate optimal schedules for businesses. This was done by implementing the theory of CSPs and search algorithms into a functional component and optimizing the algorithm to reduce computational complexity.
WebSockets:
Using WebSockets to create real-time notifications between employees and employers of each business. Communication is key in any business, providing real-time updates and notifications between the business reduces misunderstanding within the business.
Calendar implementation:
Using React-Big-Calendar library to provide the shifts and schedules in a structured format for users to access. The calendar came with different views to provide the user with broader or more in depth view.

RosterReady Outcomes

RosterReady had implemented all objectives successfully.
The Constraint Satisfaction Problem (CSP) solver was implemented with optimization techniques to create optimal schedules based on business needs. The process of developing this CSP was frustration but rewarding at the same time, it enhanced my technical knowledge in implementation and optimization of algorithms.
WebSockets were implemented to provide messages to the correct users from each team. If a new availability was created by the employee, it would notify the employer of the team. If the employer created a new schedule it would notify all employees within the team. With FastAPI built-in websockets, implementation was smooth within the backend but did require a few changes in the frontend to provide this refresh on certain pages.
The creation of the calendar within the frontend was challenging. By providing shifts on dates for the next six months and solutions on the exact dates they were created for, while making changes in CSS to the library to match my design.

Thesis: Abstract

The aim of this project was to construct an application which addressed the challenges around complex scheduling. Scheduling employees is essential in nearly every industry, which can become frustrating or time consuming for the employer. An application which automates their schedules can solve issues around complex scheduling and save time for employers.
The system was developed using a full-stack architecture, incorporating a SQL database, a FastAPI backend, and React.js frontend. The core functionality resided in the backend which integrated a constraint satisfaction problem (CSP) solver, which inherited search algorithm techniques and accepted constraints such as availability of employees.
Using the business data provided it would find a solution by assigning employees to shifts without violating any rules. The CSP became challenging when dealing with a lot of variables such as shifts and employees. Optimization techniques were introduced to overcome these challenges, reducing computational time and offering an optimal solution to the employer. Additionally, if the solution did not satisfy the employer’s needs, the employer could regenerate the solution with certain assignments locked to match their ideal schedule.
The final application resulted in an efficient, scalable and reliable scheduling system capable of generating optimal scheduling solutions within seconds, offering a solution to the process complex scheduling.

Profile Picture
Kacper Agatowski
BSc (Hons) Creative Computing

Hey, I'm Kacper! I am a hardworking and curious individual with a passion for creativity and continuous learning. I’m especially interested in backend development, where I enjoy building scalable applications and solving complex problems. In the future, I aim to further enhance my education in computer science and deepen my expertise in software engineering.

BSc (Hons) Creative Computing