How mavulahq/ledger-core works
MAVULA Ledger Core is a tenant-aware financial source of truth. Operators and clients submit product, account, loan, and transaction requests; the service applies rules and records balanced ledger postings, account entries, and audit history. Controlled lifecycle changes and financial adjustments add maker-checker approval stages. Domain events flow through an outbox/inbox to workers and read projections, with regulatory export and operational metrics as supporting capabilities. Relationships among unsampled controllers and services are documented where visible in the README or source index; other uncertain wiring is omitted.
Main entry points: transaction.service.ts Transaction processing · loan.service.ts Loan servicing · ledger.service.ts Ledger posting · domain-outbox.service.ts Transactional outbox
Components 24
API and access
- Accounts API
src/controllers/accounts.controller.ts - Lifecycle API
src/controllers/account-lifecycle.controller.ts - Adjustments API
src/controllers/financial-adjustments.controller.ts - Worker API
src/controllers/internal-worker.controller.ts
Financial operations
- Account management
src/services/accounts.service.ts - Loan servicing
src/loans/loan.service.ts - Transaction processing
src/transactions/transaction.service.ts - Ledger posting
src/ledger/ledger.service.ts - Financial adjustments
src/adjustments/financial-adjustments.service.ts
Tenant configuration
- Product configuration
src/products/product-config.service.ts - Rules engine
src/rules-engine/rules-engine.service.ts - Schema manager
src/schema-manager/schema-manager.service.ts - Workflow API
src/controllers/workflows.controller.ts
Events and projections
- Transactional outbox
src/domain-events/domain-outbox.service.ts - Outbox publisher
src/domain-events/domain-outbox-publisher.service.ts - Event inbox
src/domain-events/domain-inbox.service.ts - Engine event worker
src/worker/engine-event.service.ts - Read projections
src/read-models/read-projection.service.ts - Regulatory export
src/regulatory/regulatory-export-source.service.ts
Persistence and operations
- Financial store
src/services/fengine-store.service.ts - Tenant persistence
src/services/prisma.service.ts - Audit trail
src/services/audit-trail.service.ts - Metrics
src/metrics/metrics.service.ts
Other components
- API client
Connections 36
- API client → Accounts API: submits account requests
README.md - API client → Lifecycle API: requests lifecycle changes
README.md - API client → Adjustments API: submits adjustments
README.md - Accounts API → Account management: delegates account operations
src/controllers/accounts.controller.ts - Lifecycle API → Account management: requests status changes
- Adjustments API → Financial adjustments: submits approval requests
src/controllers/financial-adjustments.controller.ts - Worker API → Outbox publisher: triggers publishing
src/controllers/internal-worker.controller.ts - Worker API → Engine event worker: dispatches events
src/controllers/internal-worker.controller.ts - Worker API → Read projections: requests projection work
src/controllers/internal-worker.controller.ts - Worker API → Regulatory export: requests export data
src/controllers/internal-worker.controller.ts - Transaction processing → Ledger posting: posts journal entries
src/transactions/transaction.service.ts - Transaction processing → Rules engine: evaluates rules
src/transactions/transaction.service.ts - Loan servicing → Transaction processing: processes loan payments
src/loans/loan.service.ts - Loan servicing → Rules engine: validates loan rules
src/loans/loan.service.ts - Loan servicing → Product configuration: reads product configuration
src/loans/loan.service.ts - Account management → Product configuration: uses account products
src/services/accounts.service.ts - Financial adjustments → Ledger posting: posts ledger corrections
src/adjustments/financial-adjustments.service.ts - Financial adjustments → Loan servicing: adjusts lending records
src/adjustments/financial-adjustments.service.ts - Financial adjustments → Transaction processing: reverses transactions
src/adjustments/financial-adjustments.service.ts - Product configuration → Transactional outbox: writes domain events
src/products/product-config.service.ts - Ledger posting → Transactional outbox: records posting events
src/ledger/ledger.service.ts - Loan servicing → Transactional outbox: records lending events
src/loans/loan.service.ts - Outbox publisher → Transactional outbox: claims and marks events
src/domain-events/domain-outbox-publisher.service.ts - Engine event worker → Event inbox: deduplicates incoming events
src/worker/engine-event.service.ts - Engine event worker → Read projections: updates projections
src/worker/engine-event.service.ts - Transaction processing → Financial store: reads and saves transactions
src/transactions/transaction.service.ts - Ledger posting → Financial store: reads ledger state
src/ledger/ledger.service.ts - Rules engine → Financial store: loads and saves rules
src/rules-engine/rules-engine.service.ts - Schema manager → Financial store: persists schemas
src/schema-manager/schema-manager.service.ts - Financial store → Tenant persistence: persists tenant data
src/services/fengine-store.service.ts - Transactional outbox → Tenant persistence: stores event records
src/domain-events/domain-outbox.service.ts - Event inbox → Tenant persistence: stores inbox records
src/domain-events/domain-inbox.service.ts - Read projections → Tenant persistence: persists read models
src/read-models/read-projection.service.ts - Transaction processing → Audit trail: records transaction audit
src/transactions/transaction.service.ts - Ledger posting → Audit trail: records ledger audit
src/ledger/ledger.service.ts - Adjustments API → Metrics: records request metrics
src/controllers/financial-adjustments.controller.ts