STDNT GEAR ERP
Staff command center for quote review, invoice approval, and production handoff — isolated from the customer storefront, built on the same API.
- Role
- Founding Engineer (solo)
- Timeframe
- Apr 2024 — Present

At a glance
Customers submit quotes through the storefront. Staff need a dense, reliable surface to review every line item, adjust pricing, advance statuses, and hand production teams artwork and personalization exports — without touching the public site.
- Separate React admin app — scales independently of storefront traffic
- Quote-to-invoice lifecycle with 12+ tracked statuses
- Production blueprint: placement mocks, artwork, ink specs per position
- One-click CSV and ZIP exports for factory handoff
Staff
Shared API
Production handoff
The admin portal is a separate deployment from the storefront but reads and writes through the same API and PostgreSQL schema.
Quote to production
Four stages staff move orders through — from inbox to factory-ready exports.
Review queue
Search, filter, paginate all incoming quotes
Blueprint
Garment breakdown + print positions + artwork
Price & approve
Adjustments, PDF, send invoice
Production
Export CSV roster + artwork ZIP


Master quote log
Debounced search across reference numbers, customer names, and emails — with status filters and pagination.


Quote blueprint
Every quote opens into a production-ready blueprint — not a summary row.

Garment breakdown
Per-color size matrix with unit pricing
Print positions
Placement mock + artwork + ink colour chips
Personalization
Per-garment field mapping with CSV export
Invoice approval
Staff adjust fees, lock totals server-side, generate PDFs, and email invoices — then track payment status.

For engineers
Technical deep dive
Why a separate admin app, how pricing integrity works, and what gets exported to production.
For engineers
Technical deep dive
Why a separate admin app, how pricing integrity works, and what gets exported to production.
Why a separate React app
The storefront optimizes for discovery and guided quoting. Staff need dense data tables, inline status changes, multi-panel quote blueprints, and document review — a different interaction model. Running a separate admin-client keeps deploys independent: a traffic spike on the public site doesn't compete with staff doing pricing review.
Key engineering decisions
Quote status machine
A quote moves through review, approval, payment, production, and completion — each stage gates what staff can edit (e.g. no fee adjustments after invoice is sent).
- Free-form status field staff can set to anything.
- Strict status enum with UI that locks fields based on current state.
Twelve-plus explicit statuses (pending, reviewed, approved, awaiting payment, in production, shipped, completed, etc.) with UI affordances that disable pricing edits once an invoice is live.
More frontend conditionals, but staff can't accidentally mutate a finalized invoice total.
Discrete pricing adjustments
Custom print jobs need ad-hoc fees (vector tracing, rush charges) or discounts. Baking adjustments into a single mutable total loses audit history.
- Edit the total directly in the admin UI.
- Append named adjustment line items that recompute the total server-side.
Staff add fee/discount rows with descriptions. The API recalculates subtotal + VAT + shipping + adjustments and locks the result. Each adjustment is removable until invoice send.
Slightly more UI, but every invoice shows exactly what changed and when.
Production export pipeline
Factory staff need personalization rosters (names, numbers per garment) and artwork files — not access to the admin portal.
- Email screenshots of the quote detail page.
- Server-generated CSV for personalization data and ZIP of artwork assets.
Dedicated export endpoints: personalization CSV per product, artwork ZIP per quote, and server-rendered PDF for invoices — all behind staff JWT auth.
Export generation adds API surface area, but production handoff is one click instead of manual copy-paste.
Authenticated artwork serving
Customer-uploaded artwork must display in the admin blueprint but shouldn't be publicly accessible URLs.
- Store artwork on a public CDN path.
- Serve artwork through authenticated API routes with a client-side proxy component.
Artwork URLs route through /api/ with staff auth. The admin portal uses an AuthenticatedImage component that fetches blobs with the staff JWT.
Extra client complexity, but uploaded logos stay private until staff explicitly export them.
Built vs planned
Dashboard, quotes log, quote blueprint, invoice workflow, PDF generation, and production exports are live. Sidebar modules for Clients, Staff, Reports, and Matrix settings are scaffolded in the navigation — the core quote-to-invoice path shipped first.