Signature Repair
MOT to respray, done properly. The website and back office for a UK garage.
What it is
Signature Repair is the website and job tracker for a UK garage. Customers ask for a free quote, with photos if they like, accept a price online, then follow their repair through each workshop stage without having to ring up. Behind the scenes the owner prices quotes, runs jobs and edits the homepage himself, without a developer.
- 5stage repair timeline customers can follow
- 97Lighthouse performance score on desktop
- 44automated tests
- 6 wksfrom first commit to live site
Key features
Free quotes with photos
Customers describe the job and their car and attach photos. Phone numbers and registrations are checked and tidied, and an acknowledgement goes out straight away.
Track your repair
No account needed: enter your email and registration to see your car on a five-stage timeline, from enquiry to complete, plus open quotes and past repairs.
Accept a quote online
Priced quotes show an "Accept quote" button, and the garage is told the moment a customer accepts.
A workshop pipeline
The owner triages quotes, sends an estimate or fixed price, turns accepted quotes into jobs and moves them through the stages, with notes for the customer or just the team.
An editable homepage
The homepage is made of blocks the owner can edit in place, reorder or hide, then preview and publish when he is happy.
Customers and staff
A customer list that builds itself from quote requests, and staff accounts with rate-limited sign-in.
In action
The parts that aren't obvious
A CMS without a CMS
Every homepage block keeps a live copy and a draft. Publishing or discarding happens in one database transaction, so visitors only ever see finished content.
Editing on the page that cannot drift
In-place edits and the edit forms go through one shared whitelist of fields, so the two ways of editing can never disagree.
Tracking without accounts
Customers are matched on their email and registration, normalised so spacing and capitals do not matter. Accepting a quote checks both match first.
Links that cannot be guessed
Every record has a random public ID, so quote and job links never expose sequential numbers.
One container, no extras
Rails 8 with SQLite and its built-in queue, cache and websockets: no Redis, no separate database server, deployed with Kamal to a single server.
Built with
- App
- Ruby on Rails 8
- Hotwire
- Tailwind CSS v4
- Data
- SQLite
- Solid Queue
- Solid Cache
- Active Storage
- Hosting and quality
- Kamal
- Docker
- GitHub Actions
- Brakeman