Skip to content
Skip to the article
In Frappe: 20 articles
Section

Frappe Framework and ERPNext

Building on the Frappe framework and ERPNext: bench operations, hooks, custom pages and views, reports, client scripts, query patterns, and testing.

Articles
20
Updated

This section collects Avunu's development conventions, code recipes, and server procedures for Frappe Framework and ERPNext.

Getting Started

The Frappe official docs are a great starting point.

Avunu Conventions

Frappe is already quite featureful and opinionated, but we have our own (mostly-officially-undocumented) conventions.

Foundation

Customizations

Server-Side

  • Query Builder & PyPika Extensions — Advanced PyPika usage: custom functions, JSON aggregation, nested set depth, correlated subqueries, and derived tables.

  • Common Query Patterns — Everyday reads with frappe.get_all, the client-side frappe.db helpers, child table filters, and set_query for Link fields.

  • Script Reports — Tree reports, editable reports, external SQL/columns, chart generation, conditional formatting, and toolbar actions.

  • Testing on Live Databases — Integration tests with commit suppression, side-effect patching, and guaranteed rollback.

Client-Side

Frontend Integration

  • Vite & TypeScript Compilation — Building Vue/TS applications with Vite and integrating compiled assets into Frappe endpoints.

  • Custom Pages — Loading standalone applications (Declarative DOM, Vue, etc.) on Frappe Page doctypes.

Web & Portals

  • Web Forms — Public data entry forms with custom server-side context loading, client-side validation, and payment integration.

  • Portal Views — Authenticated list-mode web forms for displaying data history with sidebar navigation.

  • Builder Page Scripts — URL-driven filters on Frappe Builder pages, backed by a Python data script.

Operations

  • Bench Operations — Backup and restore, switching app remotes, branches, and major versions, bench console data fixes, and schema repair.

This section is in the public domain (CC0 1.0), code samples included. Use it however helps you.