HOJ Rentals
Live

Live in production · HOJ Rentals · Ontario, Canada

Every price used to be a phone call

HOJ rents cars and box trucks in Oakville. Their customers now never have to pick up the phone to get a price — and the counter runs the entire business from one admin panel.

A price in seconds Itemized online quotes — billed days, mileage, fees and tax — with no phone call and no account.
The whole fleet, live Every physical vehicle, its status and availability, on a day-by-day calendar.
A full audit trail Who changed what, and when, on every booking — without anyone remembering to write it down.

For the customer

They enter their dates and instantly see an itemized quote — billed days, mileage, under-25 fee, HST, all of it. They book in a couple of taps, and then manage the whole reservation — change dates, swap the vehicle, cancel — from a secure link in their inbox, with no account and no password to forget.

Behind the counter

The entire business runs from one admin panel: every booking and where it sits in its lifecycle, a live inventory of each physical vehicle, availability and free-upgrade assignment, a day-by-day fleet calendar, and a single inbox that finally captures every lead.

Quotes lock the instant they are created, so a customer’s price can never change after the fact — and inquiries stop slipping through the cracks.

The HOJ admin panel — bookings, vehicles, fleet inventory, traffic, business insights, calendar and leads inbox
One admin panel: bookings, fleet inventory, pricing, the day-by-day calendar and every lead in one inbox.

How it is built

React and TypeScript on the front end, Firebase Cloud Functions and Firestore behind it, deployed on Vercel.

The detail that matters: pricing logic lives in its own domain package, not in the UI, so a quote can never differ between two screens. The number the customer sees, the number on the confirmation email and the number in the admin panel are computed once, in one place.

One pricing package computes the quote once. The customer's screen, the confirmation email and the admin panel all display that same stored figure, so they cannot disagree. Pricing package computed once, then locked Customer's quote Confirmation email Admin panel
One package computes the quote; three surfaces display the same stored figure.

Still quoting every job by phone?