Shop floor & beyond: extending ERPNext for the factory
Four patterns we run in production at a South African designer-furniture manufacturer — from CAD design to CNC telemetry to management dashboards — all built on ERPNext rather than beside it. Presented generically; system walkthroughs available on request.
01 · The principle: extend inside the system of record
Factories accumulate side-systems — the nesting spreadsheet, the whiteboard schedule, the machine-monitoring app with its own database. Each one splits the truth. The pattern that works: build the extension inside ERPNext — custom DocTypes for the data, Server Scripts for the logic, Web Pages for the floor-facing screens — so every new capability inherits the same permissions, audit trail, API and backups as the ledger.
- No parallel database — machine data, nest data and floor status live as ERPNext documents, joined to work orders and items like everything else.
- No parallel users — floor screens and dashboards authenticate against ERPNext's own accounts and roles.
- Version-controlled anyway — the scripts and pages live in a git repo as a reviewable mirror, deployed to the instance over the REST API. Custom work stays inspectable and portable without forking the product (see the customisation dial).
02 · CAD → BOM → factory: no re-keying from design to floor
The design desk and the factory should share one structure. Two production patterns:
Design BOMs straight out of CAD
A Fusion 360 plugin walks the assembly, exports the bill of materials — part names, numbers, volumes, materials — and captures a rendered thumbnail of every part automatically. The output loads into ERPNext as the manufacturing BOM, image links included: the floor sees a picture of the part it's building, and a design revision becomes a BOM revision instead of an afternoon of retyping.
Nesting output → live cutting board
CNC nesting software (Fusion/TruNest-class) already decides how parts lay out on sheets. Its export is machine-readable — so instead of a person transcribing it into a cutting spreadsheet, a parser ingests it and creates the records directly:
The board shows every sheet and part against its work order, with offcuts tracked as stock. Mill-order and breakup-report print formats come off the same records — the paperwork is a view of the data, not a separate artefact.
03 · Machine telemetry: the shop floor reports itself
Modern CNC controllers publish live state — running, idle, alarm, active file, operator, part counts. A small always-on bridge subscribes to the controller's feed (MQTT over WebSocket in our production case) and writes it into ERPNext as two document types:
| DocType | Behaviour | What it gives you |
|---|---|---|
| Machine (live status) | Upserted continuously | A real-time floor view: which machines are cutting, what they're cutting, who's operating |
| Machine Run (history) | One row per completed job, append-only | Utilisation, run times and job history — joined to work orders for actual-vs-planned |
Floor and production teams get live pages — current machine activity, the production schedule, a week view — all reading the same records. No side database, no separate monitoring product, no per-machine licence.
04 · Floor boards & apps: screens the factory actually uses
ERPNext's Web Pages turn the instance itself into the floor's app platform: purpose-built screens (a cutting board, an intake page, a checklist) served by the ERP, styled for the workshop, driving the same documents the office sees.
- Workflow with teeth — stage transitions are buttons on the board (Confirm Cut, Confirm Breakup) that update the underlying documents; a part can't be "released" until its checklist is ticked.
- Server Scripts as the logic layer — validations and automations live as configuration in the instance (see the dial), not as a forked codebase.
- Print formats as views — mill orders, breakup reports, labels: generated from the records, never maintained separately.
05 · The insights layer: dashboards without a second system
When leadership wants friendlier dashboards than the ERP's own screens, the trap is a BI tool with its own copied data and its own user list. The production pattern instead:
- A read-only web app over the ERPNext API — modern UI (personas: finance view, factory view, mobile approvals), deployed on edge hosting, issuing only read requests.
- ERPNext is the identity provider — login via OAuth against the ERP's own users and roles; what you may see in the dashboard is exactly what you may see in the ERP. No parallel accounts to manage or forget to revoke.
- Reports that answer management's actual questions — on-time delivery, margin variance per order — built on the live ledger and stock data, not last month's extract.
Sources
Production implementations in our client network (South Africa) — walkthroughs under NDA on request · Frappe Framework docs — Server Scripts, Web Pages, REST API · Why ERPNext (platform) · Furniture manufacturing briefing