Stagerator hero image
Back to Projects
Web AppLive

Stagerator

2026-07-01
Next.js 16 · React 19 · TypeScript · Neon Postgres · Drizzle ORM · Vercel · AI SDK · Playwright

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

1

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.

2

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.

3

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

Stagerator operations dashboard showing sales, draft quotes, shipping tiles and a live job-status board
Operations cockpit — sales, draft quotes, shipping, and a live job-status board
Quote pipeline view with draft, sent, and accepted quotes and total pipeline value
Quote pipeline with drafts, sent, accepted, and total pipeline value
Quote builder showing rooms, styling window, and running totals with GST
Quote builder — rooms, styling window, and running totals with GST
Warehouse inventory overview with availability, out-on-jobs, and damage counts
Warehouse overview — availability, out-on-jobs, and damage counts at a glance
Product catalog cards showing per-unit availability and return dates
Product catalog — per-unit availability and return dates on every card
Two-week look-ahead planner showing installs, confirmed quotes, and coverage gaps
Two-week look-ahead planner — installs, confirmed quotes, and coverage gaps
Jobs calendar showing open jobs, upcoming installs, and returns
Jobs calendar with open jobs, upcoming installs, and returns
Field mode on a mobile phone showing sync status, resumable drafts, and a new quote button
Field mode on mobile — sync status, resumable drafts, and one-tap new quote
Mobile quote detail screen with a thumb-reachable total and send action above the bottom navigation
Mobile quote detail — thumb-reachable total and send action above the bottom nav

Interested in something similar?

We scope, design, and ship data and AI tools that solve the problems your team actually has.

Let's Talk