Equipment rental: fleet, bookings, payment and signed contract
From booking to a contract signed on a tablet, with no risk of double bookings.
Key figures
- applications
- 2
- lines of code
- ~17,000
- to ship the first wizard
- 5 days
Context
A distribution and services SME rents out equipment to its customers. It needs to know the state of its fleet, prevent a machine from being rented twice over the same period, calculate prices and track payments through to a signed contract.
My role
From design to deployment of both applications, fully autonomously.
Solution
The fleet management app covers machines, variants, accessories, maintenance, deposits and engine hours. Bookings block periods that are already rented and calculate the price: delivery, deposit, and accessories charged per day or at a flat rate. Online bookings come in from the store.
The handover app guides the rental on a tablet in 5 steps: identity, photos, contract, signature, completion. The PDF contract is generated in the browser, previewed, then sent by email. On the API side, payment requests go out with a bank transfer QR code.
Key features
Complete fleet view
Machines, variants, accessories, maintenance, deposits and engine hours, all in one place.
No double bookings
Periods already rented are blocked, so a machine cannot be booked twice for the same dates.
Built-in pricing
Delivery, deposit, and accessories charged per day or at a flat rate are all factored in automatically.
5-step customer handover
Identity, photos, contract, signature and completion, on a tablet, in a guided wizard.
Engineering challenges
- 1
A wizard that resumes at the right step
An interrupted handover doesn't start over: the wizard reopens at the current step.
- 2
PDF contract generated in the browser
The contract is built client-side with @react-pdf and previewed on the tablet with pdf.js.
- 3
Automated payments on the API side
Payment requests with a bank transfer QR code, plus automatic reminders and cancellations.
- 4
Unsaved changes warning
An alert flags unsaved changes before they can be lost.
Tech stack
- Frontend
- React 18TypeScriptMUI 6AG GridRedux ToolkitFormikYup@hello-pangea/dnd
- Integrations
- @react-pdfpdf.js
A project of this scale?
Let's talk about your context: I'll tell you frankly what is feasible, and how long it takes.