Case study
Jazdo: driving school scheduling without double bookings
A system for driving schools in Poland, for owners, dispatchers, instructors and learners. One lesson needs an instructor, a learner and a car at the same time, and the schedule changes all day.
Working demo

The problem
A driving school's office juggles instructors' hours, cars in for service and learners' availability, often in a paper calendar or a spreadsheet. One mistake means a learner and an instructor standing next to a car that's somewhere else.
Key features
- Dispatch calendar with day and week views, filters, booking and rescheduling.
- Instructors with working hours and time off, learners, and vehicles with maintenance blocks.
- Conflict detection, buffers between lessons and minimum notice.
- Lesson status flow and history, and notes on each lesson.
- Category B progress checklist.
- Mobile agenda for instructors and learners, with school branding.
Engineering challenge: no double booking, even under pressure
Checking the calendar before saving isn't enough: two dispatchers can check at the same moment and both see a free slot. So the rule lives in the database. Time is split into five-minute buckets in an occupancy ledger with a unique index, so the second booking of the same instructor or car simply can't be saved. Rescheduling is atomic: the lesson moves completely or not at all.
Architecture and technology
An ASP.NET Core (.NET 10) API with EF Core, on a shared platform for tenant isolation, roles, audit log and a notification outbox; an Angular 21 web app. Scheduling rules are covered by automated integration tests.
Related
- Custom software development: Business applications, internal systems, APIs and integrations built around how your company works.
- SaaS development: From the first version to a multi-tenant product: separated customer data, roles and an audit log.