Skip to content

Frappe v15 ReferenceComplete Developer Documentation & Handbook

Deep technical breakdown of Frappe Framework v15 — APIs, DocTypes, Hooks, Query Builder, JS SDK, REST, Security, Reports, DevOps & Docker.

Why This Reference?

This documentation website is designed specifically for Frappe Framework v15 developers who need clear, precise, and actionable reference material without guesswork. Every API is documented with:

  • Exact Syntax & Type Annotations (Python & JavaScript)
  • Tabbed DevOps Installation Commands (macOS, Linux, Windows WSL2, Package Managers & Docker)
  • Production Operations & Load Relief (Supervisor monitoring, Nginx reload, MariaDB thread inspection, Redis flush)
  • Frappe Docker Containerization (Docker Compose, pwd.yml, custom app images, Helm Kubernetes chart)
  • Detailed Parameter Matrices & Decision Tables (Which method to use when, why & how)
  • Complete Reporting Engine Guide (Standard, Query, Script, Tree Reports, Frappe Charts & MultiSelect filters)
  • Client vs. Server Boundary Distinctions
  • Executable & Realistic Code Examples

Quick Code Example: Data Fetching Decision Strategy

python
import frappe
from frappe.query_builder import DocType

# 1. ORM / Document API (Modifying entity & triggering lifecycle hooks)
task_doc = frappe.get_doc("Task", "TASK-2026-00001")

# 2. Database API (Fast scalar read)
task_subject, status = frappe.db.get_value(
    "Task",
    {"name": "TASK-2026-00001"},
    ["subject", "status"]
)

# 3. List Read - Enforces User Permissions (frappe.get_list)
user_tasks = frappe.get_list(
    "Task",
    filters={"docstatus": 0},
    fields=["name", "subject", "status"]
)

# 4. List Read - Bypasses Permissions / System Code (frappe.get_all)
all_tasks = frappe.get_all(
    "Task",
    filters={"docstatus": 0},
    fields=["name", "subject", "status"]
)

Frappe Framework v15 Complete Technical Reference & Handbook.