A growing custom metal fabrication business was running on spreadsheets, a whiteboard, paper job cards and photos in a phone gallery.
A growing custom metal fabrication business was running on spreadsheets, a whiteboard, paper job cards and photos in a phone gallery. Each part worked in isolation and each had a ceiling — the admin load rose faster than the job count, so every additional order made the business slightly less profitable to run. There was no single source of truth: the number in the quote, the number on the shop floor and the number in the stock cupboard were three different numbers. Stock accuracy was guesswork, job status lived in people's heads, costing happened after the margin was already lost, and nothing left an audit trail for ISO-grade evidence.
We replaced all of it with one web application that follows a single continuous thread from enquiry to delivery — designed around the job as the spine. A quote becomes an order, the order becomes a job, the job consumes stock and labour and produces quality records, and the job ships. Every module hangs off that thread rather than sitting beside it, so the numbers reconcile without anyone reconciling them. Data is captured once where it is generated — a shop-floor tablet, a wall-mounted display, a shop feed — so headcount doesn't rise with volume. Roles (not code changes) admit new users, modules share one schema, and because it is self-hosted on standard PostgreSQL, scaling is a server decision rather than a per-seat licence negotiation.
React single-page application bundled with Vite, responsive across office desktop, shop-floor tablet and wall-mounted floor display
Print stylesheets generate customer-facing documents directly from the browser — no separate reporting server
Node.js + Express REST API with JWT auth, re-querying the user record on each request so revoked accounts take effect immediately
Role-based authorisation across admin, operator and viewer
PostgreSQL with a numbered, forward-only migration chain reviewed against real production rows, not just a clean database
Nginx reverse proxy with TLS termination; nightly pg_dump with 30-day retention
Scripted deploy plus a written production runbook so releases are repeatable by any engineer
Conventional scaling path: vertical first, then a read replica, then a separate database host — no re-architecture
“Stock, job status and job cost now reconcile without anyone reconciling them, quality and material movements leave an audit trail by default, and the admin cost of an extra job is no longer tied to how many jobs we already have. It fits the way we actually work.”
— Operations Director, Metal Fabrication Client (name withheld)
Seventeen disconnected tools became one production and inventory platform carrying real money, hardened through fifteen structured QA passes and handed over with a full regression suite green — including a failure that predated the engagement. A single static sweep surfaced ~30 latent crashes before a user ever met one. With self-hosted PostgreSQL and zero per-seat licences, adding users, jobs or a second site costs no additional software spend, and the admin cost of growth is finally decoupled from the number of jobs.
Every case study started with a free discovery call. Let's explore what's possible for your business.
Book Free ConsultationAuraOne — One Platform for Work and Life
AuraOne (Canny in-house product) · Australia / Global
AI-Powered Marketing Automation Platform
GrowthMatic (B2B SaaS) · USA & Canada