Evaluating ERPNext + Frappe as our standard platform for client ERP deliveries — honest war stories welcome before we commit
Hi all,
We build ERP systems for SME / MSME clients across mixed industries. For each client we deploy a tailored ERP and put a custom UI on top so the experience feels like *their* product, not a generic ERPNext install.
We're evaluating **ERPNext + Frappe v15** as our standard platform going forward. Before we commit and standardize delivery on it, I want honest war stories from people who've shipped Frappe / ERPNext in production for paying clients.
Where we're leaning
- **Self-hosted Frappe + ERPNext v15** per client (each gets their own VPS, MariaDB, Redis stack)
- **Custom Frappe app** per client for client-specific DocTypes, workflows, hooks, fixtures
- **Custom Next.js dashboard / app on top of Frappe** via REST API — modern UI that we give to the client as their primary interface; Frappe Desk stays available as a power-user fallback
- **White-labelled** — clients see *their* brand, not ERPNext's
SPECIFIC QUESTIONS
Production reliability. For a single-client deployment (small team, dozens of concurrent users), how solid is the stock Frappe + ERPNext stack under real load? Anyone hit weird scaling cliffs around schedulers, background workers, or socketio?
Custom Frappe app development. DocTypes, hooks (doc_events, scheduler_events), permissions, fixtures, custom Python in hooks.py. Where are the landmines? What patterns work well for client-specific code that needs to layer cleanly on top of stock ERPNext?
Next.js or external frontend on top of Frappe. Anyone built a serious custom UI consuming Frappe's REST API in production? Auth handshake (token vs session)? CORS pain? Real-time updates via socketio? Performance over time as the customer dataset grows?
Multi-version upgrade pain. Frappe major upgrades (v14 to v15 to v16) — how disruptive in production? Anyone gotten stuck on a custom app that doesn't migrate cleanly across major versions?
Maintenance burden per client. Backups, monitoring, security patches, upgrades, bench operations. What does a steady-state monthly hour count look like for a small Frappe or ERPNext deployment?
Inventory and stage modeling. For manufacturing-flavoured clients, what is the cleanest way to model production stages — separate Warehouses per stage, BOM with Manufacture Stock Entries, or something else? Tradeoffs?
ERPNext vs alternatives. Odoo (Community or Enterprise), Dolibarr, Tryton, or full-custom builds on Django or Rails. For an agency shipping to SME and MSME clients, what made you pick what you picked? Anything you'd undo with hindsight?
White-labelling depth. How far can you actually take it? Logo and theme is the easy part. Can you rebrand URL paths, email templates, the API namespace, the admin / desk experience? Anyone shipped a product that truly does not look like ERPNext?
Performance ceiling. At what client size (users, transactions per day, DocType count) does stock Frappe start showing strain? What did you do — vertical scale, read replicas, partitioning, caching?
Documentation gaps. Frappe's docs are solid for basics, but I've seen complaints about deeper internals being under-documented. What did you learn the hard way that you wish was written down somewhere?
Frappe Cloud vs self-hosted. Anyone weighed paying Frappe Cloud per client vs running your own infra? At what scale does each make sense?
WHAT I'D LOVE
- Honest takes (positive and negative) from real Frappe or ERPNext deployments
- Don't-go-down-X-path-do-Y-instead warnings
- Specific tooling, patterns, library recommendations
- Anyone running multiple client deployments on Frappe, happy to compare notes
Not asking for free consulting, just trying to learn from people who have been here. Thanks.