The Event Sanctuary — Rental Management Platform
A three-app rental management system built from scratch — REST API, public renter app, and admin dashboard — with a state machine that makes item availability automatic.
The Problem
The Event Sanctuary needed a rental management system but had no in-house development team and no existing platform to build on. The business needed to track item availability accurately, manage rental requests, and communicate with renters without requiring account creation — a frictionless flow was a hard requirement from the client.
Approach
Designed and built three connected applications across 8 structured development phases — a Node.js/Express REST API, a public-facing renter app in React 19, and a protected admin dashboard. Renters interact with the system without creating an account: signed JWTs embedded in transactional emails grant secure, token-gated access to a messaging thread between renter and admin.
Tech Decisions
The hardest design problem was rental status. I built a state machine with two independent status fields — one for the admin's decision (approved, denied, pending) and one for the physical item's lifecycle (available, reserved, out, returned) — deliberately separated and governed by enforced transition logic. This prevents invalid combinations like an "approved" rental on an item that's already out, and makes availability tracking automatic rather than manually reconciled. I also designed the schema to be forward-compatible with Stripe from day one, a deliberate scope decision made in consultation with the client to avoid a costly migration later
Outcome
The platform deployed to AWS EC2 from scratch — SSH access, security groups, and PM2 for persistent uptime — with the frontend on Vercel and a custom domain configured end-to-end. The system has been in advisory and maintenance mode since, with The Event Sanctuary retaining me as technical lead for ongoing platform decisions.