Overview
You build backends — Node.js/Express, Postgres, Redis, Docker. Now you need to deliver and operate a real ERP on ERPNext v16+ and the Frappe Framework, and you want to do it the way an experienced engineer would: understand the architecture, write clean server code, and run it in production. This guide is built for exactly that.
It teaches Frappe the way you already think — mapping each concept to its Node.js equivalent (“in Express you’d write a route handler; in Frappe you whitelist a Python method”) — and it is relentlessly example-driven. Everything is themed around one running business:
ScoopJoy — a franchise-based ice-cream and food chain in India: multiple outlets, a central kitchen, 50+ staff, POS at every counter, GST accounting, and a React/Node storefront talking to ERPNext over its REST API.
Who this is for
Section titled “Who this is for”- You write backends professionally (Node.js background assumed, but any backend experience transfers).
- You know SQL, Redis, Docker, and HTTP APIs.
- You have little or no Frappe/Python-framework experience.
- You want to build, customize, and operate ERPNext at production scale.
How this guide is organized
Section titled “How this guide is organized”Two companion tracks, one guide:
- The Guide — a progressive, 35-chapter path across 7 parts: architecture → Frappe core → ERPNext modules → customization → integrations → deployment → advanced engineering. Read it front to back.
- The Cookbook — 56 self-contained, production-ready recipes (Problem → Solution → Why → Common mistake). Jump to whichever one matches the problem in front of you.
The stack
Section titled “The stack”| Component | Version | Role |
|---|---|---|
| Frappe / ERPNext | v16+ | The framework + the ERP app |
| Python | 3.14+ | Server logic, ORM, controllers, API |
| Node.js | 24 LTS | Asset bundling, Socket.IO realtime server |
| MariaDB | 10.6+ | Primary database (Postgres 14+ also supported) |
| Redis | 8+ | Cache, job queues, real-time pub/sub |
| Nginx + Gunicorn | latest | Reverse proxy + WSGI app server (production) |
bench |
latest | The Frappe CLI for sites, apps, and ops |
The Guide
Section titled “The Guide”Part 1 · Foundation
Section titled “Part 1 · Foundation”| Chapter | What it covers |
|---|---|
| Architecture Overview | How Frappe and ERPNext fit together; the site-bench-app model |
| Development Environment | Installing the stack with bench or Docker |
| The Bench CLI | Day-to-day commands for sites, apps, and migrations |
Part 2 · Frappe Core
Section titled “Part 2 · Frappe Core”| Chapter | What it covers |
|---|---|
| DocTypes — Data Modeling | The metadata model that generates tables, APIs, and forms |
| Python Controllers | Server-side business logic and the document lifecycle |
| Hooks & App Lifecycle | hooks.py, event binding, and overrides |
| Client-Side Framework | Form scripts and the Desk JavaScript API |
| REST API, RPC & Real-Time | Auto-generated APIs, whitelisted methods, Socket.IO |
| Permissions & Security | Roles, permission rules, and data security |
Part 3 · ERPNext Modules
Section titled “Part 3 · ERPNext Modules”| Chapter | What it covers |
|---|---|
| Accounting & Finance | Chart of accounts, GL entries, GST, invoicing |
| Stock & Inventory | Warehouses, batches, valuation, reorder levels |
| Selling, CRM & POS | Sales orders, leads, loyalty, point of sale |
| Buying & Procurement | Suppliers, purchase orders, subcontracting |
| Manufacturing | BOMs, work orders, production planning |
| HR & Payroll | Attendance, salary structures, leave |
Part 4 · Customization
Section titled “Part 4 · Customization”| Chapter | What it covers |
|---|---|
| Creating a Custom App | Scaffolding and structuring your own Frappe app |
| Custom DocTypes & Forms | Custom fields, property setters, form layouts |
| Server Scripts & Jobs | Server scripts and scheduled background jobs |
| Client Scripts & Pages | Client scripts and custom Desk pages |
| Print, Reports & Dashboards | Print formats, report builder, dashboards |
| Workflows & Automation | Workflows, notifications, and automation |
Part 5 · Integrations
Section titled “Part 5 · Integrations”| Chapter | What it covers |
|---|---|
| Payment Gateways | Razorpay, Stripe, and UPI collection |
| Website & E-Commerce | The built-in storefront and catalog |
| External APIs & Webhooks | Outbound calls and webhook handling |
| Third-Party Connectors | Logistics, messaging, and service connectors |
Part 6 · Deployment & Operations
Section titled “Part 6 · Deployment & Operations”| Chapter | What it covers |
|---|---|
| Docker Dev & Deployment | frappe_docker for dev and production |
| Production Deployment | Nginx, SSL, and Supervisor |
| Scaling with Kubernetes | Helm charts and horizontal scaling |
| Backup & Monitoring | Backups, recovery, and observability |
| Performance Optimization | Query tuning, caching, and profiling |
Part 7 · Advanced Engineering
Section titled “Part 7 · Advanced Engineering”| Chapter | What it covers |
|---|---|
| Multi-Company & Multi-Tenant | Architecting for many outlets and books |
| Data Migration & Bulk Ops | Importing master data at scale |
| Testing Strategies | Unit, integration, and permission testing |
| CI/CD Pipeline | Automated builds, tests, and deploys |
| Case Study: ScoopJoy ERP | Everything together, end to end |
The Cookbook
Section titled “The Cookbook”Fifty-six recipes you can copy into a real app, grouped by domain. Browse the full index, or start with the categories below.