The situation
Contracts were paper. Payments were checks and phone calls. A customer who wanted their boat ready Saturday morning called and left a message, and hoped. Staff kept the schedule in their heads and the billing in a spreadsheet that had to be reconciled by hand.
What we built
- A mobile-first progressive web app with one login and four role-based dashboards: customer, staff, manager, and administrator
- An in-app fillable storage contract with e-signature, so a customer can sign up without anyone printing anything
- Prorated first-month billing through Stripe that rolls straight into a recurring subscription, with paid invoices flowing into QuickBooks Online
- Customer-initiated drop-off and pickup requests, and staff search by owner name, license plate, or vehicle type
The details that mattered
- Administrators can trigger a password reset for a customer, but it's audit-logged and passes through a password safety validation step first.
- There's an admin-only test SMS screen, so staff can prove the messaging path works end to end without texting a real customer to find out.
- Employee punch-in is geolocated to the yard. On-site or off-site only, with no tracking beyond that.
What it proves
The full loop, from a customer tapping a button on their phone to a reconciled entry in the accounting system, with no one retyping anything in the middle.
Systems: Stripe · QuickBooks Online · Twilio · Supabase