A self-hosted, open-source ERP for manufacturing businesses (3D printing,
painting, electronics) built on top of ERPNext v16 + Frappe using the
official frappe_docker stack — with all customizations in upgrade-safe
custom Frappe apps (core is never touched).
┌─────────────────────────────────────────────────────────────────────┐
│ Your logo (Website Settings) │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ ERPNext v16 (Accounting · Sales · Purchasing · Inventory · │ │
│ │ Manufacturing · Projects · Timesheets · CRM) │ │
│ └───────────────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────┐ ┌──────────────────────────────┐ │
│ │ apps/mfg_plus │ │ apps/erpnext_bridge │ │
│ │ • Equipment Requirement │ │ • SuiteCRM sync (Accounts, │ │
│ │ Calculator (scenarios, │ │ Contacts, Opportunities) │ │
│ │ what-if, virtual WS) │ │ • Snipe-IT sync (Assets ↔ │ │
│ │ • OEE + downtime reasons │ │ Workstations, status push)│ │
│ │ • Production Quotas │ │ • Webhooks + sync logs │ │
│ │ • Shop-floor Job Card UI │ └──────────────────────────────┘ │
│ │ • 9 analytics reports │ │
│ │ • Command Center workspace │ Docker: frappe_docker v16 │
│ └─────────────────────────────┘ (compose.yaml + overrides) │
└─────────────────────────────────────────────────────────────────────┘
ERPNext already covers the heavy lifting: double-entry accounting, multi-currency, sales/purchase orders, inventory with serials & batches, multi-level BOMs, Work Orders, Job Cards, Production Plans, Projects, Timesheets, and a full REST API. This repo adds what manufacturing businesses like yours actually miss:
| Need | Native ERPNext | MFG+ adds |
|---|---|---|
| "How many 3D printers / paint stations / benches for 4 units/day?" | Work Order scheduling only (no sizing) | Equipment Requirement / Rough-Cut Capacity Calculator with scenarios, bottleneck, shift comparison |
| Capacity load visibility | No load chart per workstation | Workstation Load Chart (planned vs actual vs available, virtual what-if stations) |
| OEE + downtime reasons | Job Cards only | OEE Scorecard (A×P×Q), Downtime Logs, nightly rollup |
| Standard vs actual cycle times | Not tracked | Job Card fields + EMA feedback loop (audited BOM write-back) |
| "Are we on track for today's quota?" | No | Production Quota tracker, auto-refreshed |
| Shop-floor capture on tablets | Desktop Job Cards | /app/shop-floor mobile screen (start/pause/complete, downtime) |
| SuiteCRM / Snipe-IT integration | None | erpnext_bridge app: one-way & bidirectional sync, webhooks |
| Bean-counting dashboards | Standard reports | 9 script reports + Manufacturing Command Center workspace |
./install.sh --mode local --site erp.localhost --admin-password 'ChangeMe!'This clones the official frappe_docker (v16), boots the production stack
(MariaDB, Redis ×3, backend, frontend/nginx, workers, scheduler, websocket),
creates the site, installs erpnext + mfg_plus + erpnext_bridge, and loads the
SmartCube RGB Lamp demo (multi-level BOMs across 3D printing, curing,
painting and electronics, plus 3 capacity scenarios).
- 1 shift → 5 large printers (bottleneck, 92.6% util) · 2 shifts → 3 printers (bottleneck moves to painting) · 3 shifts → 2 printers
- Open Manufacturing → Manufacturing Command Center → Capacity Scenario →
compare
SCN-DEMO-1SHIFTvs-2SHIFTvs-3SHIFT.
Then follow docs/:
| Doc | Contents |
|---|---|
| 01-installation.md | Docker install (local & build modes), TLS, upgrades, backups, troubleshooting |
| 02-capacity-calculator.md | The math, worked example, what-if workflow |
| 03-configuration-guide.md | MFG+ Settings, custom fields, OEE, quotas, shop floor |
| 04-integrations.md | SuiteCRM & Snipe-IT setup, webhooks, field maps |
| 05-analytics-and-dashboards.md | Reports & the Command Center |
| 06-branding.md | Put your logo on the screen (navbar, login, prints) |
| 07-developer-guide.md | App structure, tests, upgrade-safety rules |
install.sh one-command production installer
docker/ compose.yaml + overrides (official frappe_docker pattern)
overrides/ mariadb, redis, noproxy, local-apps (dev mounts)
images/custom/Containerfile bake apps into the image (build mode)
scripts/ create-site.sh, backup.sh
apps.json apps list for the official layered image build
apps/mfg_plus/ ★ main app (see its README)
apps/erpnext_bridge/ integrations app (SuiteCRM, Snipe-IT)
docs/ 01–07 guides
branding/ logo placeholder + brand guide
ui-mockups/ branded UI previews (open in any browser):
equipment-calculator.html · command-center.html · shop-floor.html
- ERPNext / Frappe: GPL-3.0 (Frappe Technologies)
apps/mfg_plus,apps/erpnext_bridge: GPL-3.0-or-later- Infrastructure: official
frappe_docker(MIT) — we only add compose overrides
- No ERPNext core file is modified — schema changes ship as app DocTypes and
hooks.custom_fields; behaviour hooks usedoc_events/ scheduler events. bench update/ core upgrades apply cleanly; app code pins toversion-16.- Run
bench --site <site> run-tests --app mfg_plusafter upgrades (26 unit tests incl. the capacity engine).
- Optional add-on: Frappe MFG (official, GPL) enriches Work Order / Job Card UX further; MFG+ works with or without it.
- Finite scheduling (sequence-aware Gantt per job) is deliberately left to ERPNext's Production Plan + Work Order scheduling; MFG+ provides the load view and sizing layer around it.
- Multi-currency: native ERPNext (accounting currency + exchange rates); MFG+ scenarios are currency-agnostic.
Built against ERPNext v16 (version-16 branch) and frappe_docker main,
verified August 2026. Demo data and UI mockups use a placeholder logo —
swap in yours per docs/06-branding.md.