🔧 Wee Auto Car Care

Live bay and mechanic dashboard for independent car workshops

HTML/CSS/JS Python localStorage Static Demo Booking System

📋 Project Overview & Problem Statement

Challenge: Independent Malaysian car workshops run on whiteboards and mental models. The taukey juggles phone calls, walk-ins, bay availability, and mechanic workload all at once — leading to double-bookings, missed slots, and the wrong "come down, we're free" answer when the bay is empty but no qualified mechanic is actually available.

Solution: Wee Auto Car Care is a taukey-facing booking dashboard that tracks bays, mechanics, and service skills together. It surfaces the overlooked distinction between a "free bay" and a "bookable bay" — the bay might be empty, but if no mechanic with the right skill is free, it is actually idle, not bookable. The dashboard makes this visible at a glance.

Key Benefits

🖥️ Application Features

📊 Bay × Time Grid

3 bays across 8 hourly slots with 4 colour-coded states: Bookable (green dashed), Idle (yellow), Busy (amber), Multi-slot (red). Cells show mechanic, service, plate, and ready time for bookings; free cells show which mechanics can do which services.

👷 Mechanic Availability Strip

One row per mechanic, one cell per slot. At a glance see who is free when, what service they are doing, and how their day is loaded. Handles multi-slot jobs (timing belt, AC compressor) as spanning bars.

➕ New Booking Modal

Interactive form that validates in real time: date picker (constrained to open days), service dropdown, slot dropdown (only shows free slots in the matching bay), mechanic dropdown (only shows skill-matched + slot-free mechanics), customer name + plate. Prevents impossible bookings.

❌ Cancel Any Booking

Every booking row has a Cancel button. Click → confirm → booking disappears, bay + mechanic slot immediately becomes Bookable in the grid. Good for demo purposes and real-world "customer no-show" handling.

🗓️ Pill-Strip Date Navigation

7-day pill strip across the top with utilization % on each pill. Click any day → grid refreshes with that day's bookings. Prev / Next week arrows for range. "Today" button returns to demo default. Sundays greyed out (workshop closed).

🔁 Reset & Download

Reset button restores the original 142 seed bookings (clears the visitor's localStorage). Download button exports the current state as JSON. Both enable prospects to explore without breaking the demo for the next visitor.

15 Workshop Services Modeled

Tyre Replacement (4w)
Tyre Replacement (1w)
Puncture Repair
Tyre Rotation
Wheel Balancing
Hunter Alignment
Engine Oil Change
Spark Plug
Engine Diagnostic
Timing Belt (180m)
AC Gas Top-up
AC Service (75m)
AC Compressor (180m)
Battery Test
Battery Replacement

🧠 The 4-State Bookability Logic

This is the core insight that differentiates the dashboard from a naive "free / busy" grid. Every cell in the bay grid is classified as one of four states:

StateMeaningWhat the taukey does
BOOKABLEBay free AND ≥1 qualified mechanic freeAccept the booking or walk-in
IDLEBay free BUT no qualified mechanic freeTell customer to come later — don't wave them in
BUSYBay occupied (single-slot booking)Bay back online at next bookable hour
MULTIBay occupied (multi-slot job like timing belt 3h)Bay locked for N hours, next bookable after

Why this matters: a workshop with 3 bays and 3 mechanics has 24 slot-units per day, but the mechanics have different skills. Bay 3 (Hunter alignment) can only be worked by Vishnu. If Vishnu is busy doing tyre work in Bay 1, Bay 3 is physically free but functionally unavailable — a naive grid would show it as "free" and the taukey would wrongly tell the customer to come. The dashboard flags this as IDLE instead.

🛠️ Technical Architecture & Implementation

Frontend Stack

Vanilla HTML CSS Grid Vanilla JavaScript localStorage No frameworks

Build Stack

Python 3 Seed generator HTML template builder

Deployment

Static hosting GitHub Pages Zero backend

System Architecture

📖 Development Setup

Prerequisites

Quick Start

# Clone the repository git clone https://github.com/lyven81/ai-project.git cd ai-project/projects/wee-auto-car-care # Open demo.html directly in any browser (no server needed) # Or serve via Python: python -m http.server 8080 # Then visit http://localhost:8080/demo.html

Regenerate Seed Data

python generate_seed.py # produces workshop_bookings.json (142 bookings) python build_dashboard.py # embeds seed JSON into demo.html

File Structure

projects/wee-auto-car-care/ ├── generate_seed.py # reproducible 12-day seed generator ├── build_dashboard.py # HTML template + JSON injector ├── workshop_bookings.json # 142 bookings, source of truth └── demo.html # self-contained interactive dashboard

🚀 Deployment

The dashboard is a static HTML file with zero backend dependencies. Deploy by copying demo.html to any static host:

# GitHub Pages (current deployment) # URL: https://lyven81.github.io/ai-project/projects/wee-auto-car-care/demo.html # Or any other static host — Netlify, Vercel, Cloudflare Pages, S3, etc. # Just upload demo.html and it works — no build step required for visitors.

Production Notes

📊 Key Metrics

3 × 3
Bays × Mechanics Modeled
142
Seed Bookings Across 12 Days
4
Bookability States
15
Services in Catalog

Business Value