Standard ERP wasn’t designed for airline logistics. It doesn’t know about seat grids, baggage calculations, or passenger manifests. Building this custom Frappe application taught me how far the framework can be pushed — and how elegantly it can model a completely custom business domain.

What Was Built

The app extends Frappe at three levels:

  1. DocTypes — Custom schemas (Airline Flight, Airplane Ticket, Airport) that model the aviation domain natively inside ERPNext.
  2. Server Scripts — Python validation logic that prevents oversold seats, automates baggage fee calculations, and runs pre-commit checks.
  3. Hooks — Event-driven automation on validate, on_submit, and background Redis queue triggers — keeping every data change tracked and auditable.