
Stagerator
An end-to-end operations platform for a home-staging business — a pinned mobile PWA for capturing quotes room-by-room inside the customer's house, and a desktop back office that runs the whole warehouse: inventory, jobs, packing, rosters, and invoicing.
Problem Solved
Home staging is a logistics business disguised as a design business. Every job means quoting a house room by room, reserving hundreds of individual furniture items across overlapping date windows, packing and shipping them, rostering stylists and removalists, and getting everything back on time — most of it coordinated today through spreadsheets, phone calls, and memory.
Stagerator replaces that with one system built around how the work actually happens: quotes are captured on a phone while walking through the property (offline-tolerant, with local drafts that sync when signal returns), and every downstream step — stock allocation, job scheduling, packing sign-off, removalist coordination, and Xero invoicing — flows from that single capture.
Key Features
Field-First Quote Capture
The PWA launches straight into field mode from the phone's home screen. Stylists build a quote room by room, pulling real inventory with live availability, while a dark summary bar keeps the running total and "Send Quote" action thumb-reachable. Drafts persist locally on the device, so a dead spot in a house doesn't lose work.
Live Warehouse Inventory
Every product is tracked to the individual stock unit — 500+ items across sofas, lamps, rugs, and décor kits — with availability computed against job date windows: how many are free, how many are out on stagings, and when each one is due back.
Two-Week Look-Ahead Planner
A rolling 14-day operations calendar surfaces exactly what needs attention: installs in the window, confirmed quotes starting soon, roster gaps with no shift coverage, and installs with no removalist confirmed — before any of them become a morning-of emergency.
Customer-Facing Quote Links
Quotes go out as tracked share links. The office sees when a customer opens one, and customers accept online — which flips the quote into a job with stock reservations, without anyone re-keying data.
Built-In AI Assistant
An embedded assistant answers "how do I" questions in-app and lets staff log feature requests and bugs (with screenshots) straight into the development pipeline, closing the loop between the people using the tool and the people building it.
End-to-End Job Lifecycle
Jobs move through booked → picking → packed → installed → returning → closed, with QR-scannable packing sign-off, voice notes from site, timesheets, and Xero integration for invoicing.
Architecture
Architecture Overview
A Next.js 16 App Router application on Vercel, with server components and server actions doing the heavy lifting and a deliberately thin client. Data lives in Neon serverless Postgres via Drizzle ORM.
The deployment pipeline is branch-native end to end: every pull request gets its own copy-on-write Neon database fork, and preview builds self-migrate their fork at build time — so schema changes are exercised against production-shaped data before merge, and a guard refuses to run migrations if a preview ever resolves to the production database.
- Frontend: Next.js 16 App Router, React 19, Tailwind CSS + shadcn/ui, PWA with service-worker shell for the field surface
- Data: Neon serverless Postgres, Drizzle ORM with committed migrations, per-PR database forks
- Auth: Custom email + password with Argon2 hashing and JWT sessions (jose)
- AI: Vercel AI SDK powering the in-app assistant
- Files & email: Vercel Blob for product photos and floor plans; Resend + React Email for quote delivery
- Quality: Playwright end-to-end suite across desktop and mobile (390 px) viewports
Key Decisions
PWA over native app
Stylists are on-site staff, not app-store users. A pinned home-screen PWA ships instantly, updates on every deploy, and shares one codebase with the back office — while IndexedDB-backed local drafts cover the offline gap that would otherwise justify going native.
Database branch per pull request
Schema migrations are the riskiest part of shipping fast on a live operations system. Forking the production database copy-on-write for every PR means each preview deployment runs its migrations against realistic data — migration bugs surface in review, not in production.
Stock tracked at the unit level, not the SKU level
Availability in staging is a date-range problem: the same sofa can be booked for two non-overlapping jobs. Modelling every physical unit individually makes the availability engine a straightforward interval query and gives packing, returns, and damage tracking a concrete thing to point at.
Screenshots









Interested in something similar?
We scope, design, and ship data and AI tools that solve the problems your team actually has.
Let's Talk