Back
Prostor · 2022 – active

A full business system for storage units — reservations, operator dashboard, a single source of truth

Prostor rents storage units. We built the whole stack: the site where customers reserve, the dashboard through which the operator runs the business, and the backend that holds the state for both sides.

The story

The site looks simple. Under it stands the operational system the business actually runs on.

Worth noting

  • · Customer site, operator dashboard, one shared backend
  • · Atomic reservations — no double bookings, no phantom holds
  • · The storage operator runs the entire business through the system

The problem

The storage-unit operator was running reservations, allocation, billing, and customer communication in different tools that didn't communicate with each other. The customer-facing side either didn't exist or didn't track the real state — a visitor couldn't trust that the unit they see online was actually available.

What we built

We built three parts on one backend: a reservation site (browse units, choose, reserve, pay), an operator dashboard (allocation, billing, communication with customers), and a .NET backend that holds the canonical state. Email confirmations and notifications go through Mailgun. The reservation handshake is atomic from the customer's click to the display on the operator's side — no double bookings, no phantom holds.

Modules & surfaces

  • Reservation siteBrowse available units, choose by date, reserve, and pay — without a phone call.
  • Operator dashboardUnit allocations, billing, customer communication, occupancy overview — the operator's working surface.
  • Backend with shared stateA single source of truth behind the site and behind the dashboard. No divergence between what the customer sees and what the operator sees.
  • Email notificationsReservation confirmations, reminders, billing notices — automatic through Mailgun.

How we approached it

We modelled the whole life of a storage unit — from listing, through reservation and occupancy, to release — and made that cycle the backbone of the system. Both sides (customer and operator) are thin views over the same backend, so there's no integration that could diverge. The goal wasn't a pretty reservation site; the goal was that the site can't lie.

Outcome

Customers self-serve the whole reservation flow. The operator handles exceptions, not standard flows. The site is a thin layer over the real operational state — what you see online is what's actually free.

In use