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




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.
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
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.
Scale & metrics
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.