What this project solves.
End-to-end service management system for auto workshops featuring online service booking, an admin dashboard, comprehensive customer management, and real-time vehicle service status tracking.
Auto repair workshops manage bookings, job cards, and customer records through paper-based systems or disconnected spreadsheets — making scheduling chaotic, job status opaque, and customer communication manual.
A web-based service management system with an online booking portal for customers and a comprehensive admin dashboard for workshop staff. Service advisors can manage job cards, assign technicians, update service status, and communicate updates — all in one system.
Eliminates scheduling conflicts through digital booking with availability management, gives customers real-time visibility into their vehicle's service status, and provides workshop management with actionable reporting on throughput and revenue.
See it in action
Under the hood
Features
- Online service booking with availability calendar
- Customer account management with vehicle history
- Digital job card creation and technician assignment
- Real-time service status tracking (booked → in-service → ready → delivered)
- Admin dashboard with booking overview and workload management
- Service history reports by customer and vehicle
- Email notification triggers for booking confirmation and status updates
- MySQL-backed relational data model for customers, vehicles, and service records
Challenges
- Preventing double-booking when multiple customers book the same time slot simultaneously
- Designing the relational schema to correctly handle one customer owning multiple vehicles with independent service histories
- Building a responsive React frontend that communicates reliably with a PHP REST backend
- Implementing status transitions that are meaningful to both customers and workshop staff with different terminology
Solutions
- Used MySQL transactions with row-level locking to enforce booking slot uniqueness atomically
- Designed a normalised schema with separate customer, vehicle, and service record tables with proper foreign keys
- Built a lightweight PHP REST API layer with JSON responses consumed by React's fetch API
- Created a dual-view status system: internal technician states that map to simplified customer-facing labels
Lessons Learned
- Relational databases shine for interconnected entities like customers, vehicles, and service records
- Concurrency issues in booking systems must be handled at the database level, not just application level
- React and PHP can work together cleanly when the PHP layer is treated strictly as a JSON API
- Domain language matters — workshops and customers use different words for the same states, requiring translation in the UI
