← All work

Case study · № 011 · 2025

BR COLLINS · courses online, seats without a clash

A training platform: buy courses online or book a physical half-day or full-day seat, with the instructor's calendar managed so two bookings never collide. Built, not taken to production.

RoleFull-stack
Timeline2025
StackNext.js · Node · calendar · Three.js
StatusPreview build ↗
Prototype Technical plate 011: course cards and a conflict-checked booking calendar for BR Collins

The problem

A trainer who teaches in person has one calendar and cannot be in two places at once. Selling both online courses and physical, time-boxed sessions means the booking system has to understand that a full-day course blocks the whole day and a half-day blocks half, and never let two bookings overlap.

BR Collins was a course website that also had to protect one person's schedule.

The build

  • A catalogue of courses to buy online, alongside physical half-day and full-day sessions bookable at real locations.
  • Instructor calendar management that prevents conflicts, so two courses cannot be booked into the same day and time.
  • Rich course content: videos and 3D models with exploded views, so a course page shows the equipment, not just a description.

Decisions that mattered

Treat the calendar as the hard constraint. Everything else is commerce; the one thing that must never break is double-booking a trainer. The booking logic was built around that rule first.

Half-day and full-day as real durations. A booking is not just a slot, it is a length that blocks a matching amount of the day. Modeling duration is what makes conflict prevention correct.

Sell with the same 3D content. Reusing exploded-view models on course pages let the training content show the actual equipment.

Outcome

Fully built as a course and booking platform, but not taken to production. Even unshipped, it is a clean example of encoding a real-world constraint, one trainer, one calendar, no overlaps, directly into the booking logic.

Previous case← Leaf'em Next caseAR Travels →