All work
Multi-tenant SaaS · Manufacturing ops·2024 – present

OH SCRAP!

Multi-tenant job-shop platform: estimating, scheduling, and a live shop floor, in daily production.

In production · my product
OH SCRAP scheduling timeline placing work orders across saw, mill, and lathe work centers by capacity and due date
The back-scheduling engine lays 32 operations across the SAW, MILL, and LATHE work centers, respecting each center's capacity and not-later-than dates, with manual override.
OH SCRAP live shop floor board showing work orders moving through production stages with progress bars
The live shop floor: drag-drop operation reordering with Socket.io sync the whole team sees in real time. Operator and customer names blurred for privacy.
OH SCRAP actual-vs-estimated report with overall efficiency, cost variance, margin, and scrap per work order
Actual-vs-estimated in one view: 157% overall efficiency, quoted vs. actual cost, 45% margin, and scrap rate, per work order. Customer column blurred; the numbers are real.
OH SCRAP settings page showing shop rates, operating-hours capacity inputs, feature toggles, and QuickBooks sync
Per-shop configuration: rates and markup, operating-hours math that feeds capacity planning, feature toggles, and a QuickBooks Online sync tab.
01

The problem

A manufacturing job shop ran estimates in spreadsheets, schedules in shared Excel, and tracked production on paper. There was no single source of truth for job status or cost, so visibility gaps, scheduling conflicts, late jobs, and double-entry into QuickBooks were routine.

02

What I built

  • Estimate → quote → work-order lifecycle with reusable templates and automatic status transitions
  • A back-scheduling engine that respects work-center capacity, shifts, and not-later-than dates, with manual overrides
  • An interactive shop floor with drag-drop operation reordering and live Socket.io updates across the team
  • First-Article QC holds with an approve / reject / rework workflow
  • Multi-dimensional reporting: production trends, cost variance, scrap analysis, actual-vs-estimated labor
  • Tenant-safe RBAC on every route, model, and service; Auth0 invite-only org enrollment
  • QuickBooks Online integration: connection management, customer import, and estimate export
03

Architecture

A React 18 + TypeScript + Vite front end against a Node/Express + Mongoose API. MongoDB is partitioned per organization for tenant isolation, Auth0 handles OIDC + machine-to-machine auth, Socket.io drives real-time shop-floor sync, files live in Google Cloud Storage behind signed URLs, and Sentry + Pino provide observability. Husky pre-commit gates keep the test suite green.

Client
React + Vite SPAShop floor (Socket.io)Chakra UI · PWA
API
Node / ExpressTenant-safe RBACAuth0 OIDC + M2M
Data & services
MongoDB (per-org)Google Cloud StorageQuickBooks OnlineSentry + Pino
04

Scale & metrics

Daily
shop-floor use in production
2+ yrs
running a real shop
6
versions shipped on customer feedback
90+
tests passing
ReactTypeScriptNode / ExpressMongoDBMongooseAuth0Socket.ioChakra UIReact QueryZustandGoogle Cloud StorageQuickBooks Online APISentry
05

Outcome

My product, built and owned by me, with Sutcliffe Mechanical as the flagship customer using it on the shop floor every day. Six versions shipped on a continuous customer-feedback loop, with tenant isolation ready for additional orgs.

Want something like this built for your business?

Fixed-scope engagements and fractional retainers. Two client slots. Now booking.