![Stefan Mens - Smart Scheduling Logic for MusicSchoodle](https://res.cloudinary.com/dlxpwfaic/image/upload/v1717326261/case_study_stefan_musicschoodle_884x644_467a1280cb.webp)
The Client Application
MusicSchoodle helps teachers to manage and schedule their lessons. It considers students' availability, location, public transport options, and other relevant details to create an efficient, gap-free timetable.
Project Highlights
- 3 months of productive collaboration
- 1 dedicated Front-end developer
- Clear and efficient development process
- 5 milestones
Summary
Varbintech helped Stefan Mens develop a core logic for a web app for better student management and intuitive scheduling.
Results
Bugs-free
Scheduling logicDemo env
Fine-grained1st version
In the first week2 days
Into 40 minutes3 months
CollaborationProject Scope
Services
Team management, Project management, Front-end development, Code review
Team
Varbintech:
- 1 Front-End Developer
Client
- 1 Founder
Tech Stack
Front-End:
Infra:
The Client
Stefan Mens, an experienced musician and music teacher, aimed to create a web application that would offer improved student management and intuitive scheduling features.
The Problem
The client recognized a promising business opportunity in adding a scheduling feature to an existing app for teachers and sought expert assistance to create a solid algorithm for that.
The Varbintech team was responsible for building the core logic to generate optimal schedules for each teacher based on various input criteria. Here are some of them:
- Transport. The algorithm should consider the teacher’s preferred transport method, whether public transit, car, bicycle, or walking, and accurately calculate travel times to ensure punctual arrivals at lesson locations.
- Location. Teachers may have multiple lessons in different buildings throughout the day. The algorithm accounts for commutes and includes a standard 10-minute transition time for lessons in different buildings within the same location.
- Lesson Duration. Each teacher has a personal preference for the maximum consecutive hours of lessons. If this limit is reached, a 40-minute break is scheduled before any further lessons. A particular teacher manages the length of the break.
- Minimizing Gaps. The algorithm aims to schedule lessons back-to-back with no gaps or the most minor possible gaps if unavoidable.
- Location Preferences. Some students have specific location preferences for their lessons, which are given top priority and included in the schedule.
- Scheduling Efficiency. The goal is to optimize the number of lessons while ensuring each student has only one lesson per week while a particular teacher has the maximum booking.
The Process
Initially, our team established a sustainable collaboration workflow that included regular, upfront scheduled meetings via Zoom and dedicated channels in Slack for ongoing chat and quick updates. Additionally, we provided weekly email updates to keep the client informed and gather timely feedback.
We also introduced some aspects of the Scrum methodology to enhance our project management and delivery process. We split the project into five milestones with appropriate tasks, requirements, and acceptance criteria. This approach ensured smooth collaboration and adequate project progress. Also, we used Google Docs and shared all the updates via email to keep each side in the loop.
The Solution
Cloudflare Pages for Project Demos
Due to the lack of access to the Front-end source code, we needed an effective way to demonstrate our progress and minimize delays in receiving client feedback. We also wanted a method to showcase our algorithm with various data sets, allowing the client to see real-time results.
To address these needs, we turned to Cloudflare Pages, a service perfectly suited to the project’s requirements. Its free tier provides ample resources, which were more than sufficient for our purposes. We chose Vite.js as our build tool to seamlessly integrate HTML, CSS, JavaScript, and Bootstrap. Vite.js offers production-ready tooling, including a development server and pre-configured build commands, ensuring highly optimized static assets.
This approach allowed our team to focus on the critical aspects of the project and deliver exceptional results efficiently.
Visualizing Results with Bootstrap
We received initial data in JSON format, and the generated results were also provided in JSON format. With so many lines of data, it was tough to determine whether our logic was working correctly and identify any necessary adjustments or fixes.
To address this, we decided to leverage the power of Bootstrap to display the results in a table view. This approach closely mirrored the internal logic of the main application, making it easier to visualize and verify the data.
Using Advanced Algorithms for Efficient Scheduling
To address the initial requirements and criteria, we decided to employ several well-known algorithms and techniques tailored for this purpose, including graph theory, the shortest path problem, the quicksort algorithm, and memoization.
We used the sorting algorithm to arrange lessons by location, identifying students with multiple preferred slots. This preprocessing step allowed us to eliminate some lessons before applying the main logic. As a result, the final data set was optimized and normalized. The memoization technique helped us keep track of already scheduled students and lessons, thus speeding up the calculation process.
By applying the shortest path problem and graph theory to the data, we could reduce the JSON dataset combined with the requirements for final calculations, leading to more accurate and efficient scheduling results.
Achievements
In the first week, we delivered the initial version of our solution, demonstrating our commitment to effectively using the client's time and budget. We built a detailed demo environment with an eye-catching design, making it easy for the client to track our progress. Throughout the project, we maintained a friendly and productive atmosphere, facilitating effective collaboration and continuous solution refinement.
Additional outcomes:
- The first version was provided in one week
- Eye-catching, fine-grained demo environment
- Smooth, trackable, and fully transparent development and collaborative process
- The scheduling process is optimized from two days to ~40 minutes