Skip to content

M Modules

Reusable, composable modules for Framework M applications.

business-m is the Base App. It provides domain primitives — focused, reusable, composable cores like m-core (Party, Item, Address). Products like wms, crm, fna, and regional compliance like m-india are Plugins / Extension Apps.

Business M is a living laboratory for Progressive SOA. It demonstrates how a single codebase can scale:

  1. Monolith (Indie): Local SQL JOINs for maximum consistency.
  2. Macroservice (RPC): NATS Request/Response for distributed domain lookups (Showcased in Finance).
  3. Autonomous Microservice (CQRS): Event-driven projections for high-throughput survival (Showcased in WMS - Distribution Centers resolving Outlets).

Module Description Depends On Status
m-core Party, Address, Item, UOM - 🔄 Planning
m-invoice Invoice DocTypes m-core 🔄 Planning
m-ledger Port/Adapter for Book-Keeper/Stock-Keeper - 🔄 Planning
m-hr-core Employee, Designation, PayScale m-core 🔄 Planning
Module Description Depends On Status
m-regional Port Specification for Compliance - ✅ Defined
m-india India GST, E-Invoice, GSTR Adapter m-invoice, m-regional 🔄 Planning
Extension Guide How to plug in regional logic - 💡 Guide
Module Description Depends On Status
m-imprest Cash/Imprest Account Management m-ledger 🔄 Planning
m-leave Leave Types, Applications, Credits m-hr-core 🔄 Planning
m-medical Medical Claims (Form 97) m-hr-core 🔄 Planning
m-pension Pension Lifecycle (PPPO→FPPO) m-hr-core, m-ledger 🔄 Planning

wms/pyproject.toml
[project]
dependencies = [
"framework-m",
"m-invoice", # Core invoicing
"m-india", # India GST (optional)
]
m_invoice/__init__.py
from .doctypes import PurchaseInvoice, SalesInvoice, InvoiceItem
wms/services/procurement.py
from m_invoice import PurchaseInvoice
async def receive_goods(supplier_id: str, items: list):
invoice = PurchaseInvoice(
supplier=supplier_id,
items=items,
)
await invoice.save()
  1. Single responsibility — One domain per module
  2. No app-specific logic — Generic, reusable
  3. Optional dependencies — e.g., m-india requires m-invoice
  4. Event-driven — Publish events, don’t call apps directly
  5. Book Keeper integration — Use ledger for financial data