Work / Case study 01 / Web application
ERX Motors
A busy independent garage in Corbu, Romania, running its entire operation on paper job cards and phone calls. Replaced with a system the mechanics actually wanted to use — and a link that lets every customer watch their own repair progress from their phone.
Everything lived on paper, or in one person's head.
Every repair began as a handwritten card. It travelled from the front desk to the ramp, picked up notes, and — if it survived the week — ended in a folder. Ask "is the Passat ready?" and the answer required finding the card, finding the mechanic, or both.
The consequences were entirely predictable and entirely expensive. Customers rang for updates, so someone stopped working to answer. Jobs quietly stalled waiting for a part nobody had logged. Work that had been done wasn't always work that had been invoiced. And there was no history: a returning car arrived with no record of what had been done to it last time.
Off-the-shelf garage software existed, but all of it assumed a larger operation, an English-speaking team, and a monthly licence per user that made no sense at this size.
One system, four audiences.
Rather than a single internal tool, the job broke naturally into four surfaces sharing one database — each designed for a different person in a different situation.
- The staff application. Authenticated, mobile-first, and the daily home screen. Vehicles, jobs, statuses, parts, labour and notes — updated from a phone next to the car rather than from a desk afterwards.
- The customer tracking portal. Every job gets its own link. Sent over WhatsApp, it shows the owner exactly where their car is in the process, with no login, no app and no phone call.
- The public booking form. An open page where customers request a slot. Bookings arrive inside the system instead of scattered across messages, missed calls and a paper diary.
- Printable job reports. A clean, generated document per job — handed to the customer, filed for the business, and usable as proof of work.
- A review path. A short redirect used after collection to make leaving a public review a single tap rather than a search.
The entire interface is in Romanian — labels, statuses, messages, buttons — because a tool the team has to translate in their head is a tool they stop using by Wednesday.
Deliberately small parts.
A React front end built with Vite, talking to Postgres through Supabase. Authentication and row-level security are enforced at the database, so a customer opening a tracking link can only ever see their own job — that guarantee doesn't depend on the interface behaving itself.
- No state management library. Local React state plus Supabase's realtime subscriptions were enough. Adding a store would have meant more code to maintain and nothing gained.
- Realtime by default. A status changed on the ramp appears on the customer's tracking page immediately, with no refresh and no polling loop.
- Links instead of accounts. Asking a customer to register would have killed adoption instantly. A tokenised URL sent by WhatsApp is the entire authentication story for the public side — matched to the actual risk.
- Statuses that mirror the workshop. The workflow models how this garage genuinely operates, including the awkward states — waiting on a part, waiting on customer approval — that generic software hides.
- React 18
- Vite
- React Router
- Supabase
- PostgreSQL
- Row-level security
- Tailwind CSS
The phone stopped ringing for the wrong reasons.
The tracking link turned the single most common interruption of the working day — "any news on my car?" — into something the customer answers themselves.
- Fewer interruptions. Status enquiries move from a phone call that stops work to a link the customer already has.
- Nothing falls through. Jobs waiting on parts or approval are visible as a state, not remembered as a favour.
- Work done is work billed. Labour and parts are recorded against the job as they happen, not reconstructed from memory at invoicing.
- A history that survives staff. Every vehicle carries its own record, so the knowledge belongs to the garage rather than to whoever was on that day.
- A visible professionalism gap. A small independent garage sending a live tracking link presents better than competitors several times its size.
The same pattern — internal system, customer-facing window, automated paperwork — transfers cleanly to any business that takes something in, works on it, and gives it back. Workshops, repair shops, clinics, studios, trades.