Double-Entry Journal & Financial Reporting Engine
JiBe ERP
Enterprise ERP running global maritime shipping operations across technical, crew, procurement and financial modules.
The problem
Financial posting was manual and disconnected from the modules that generated it. Invoices, payments and purchase orders each produced accounting consequences that somebody had to key in by hand — slow, and wrong often enough to matter in a compliance-sensitive domain.
How I approached it
- Architected the Journal Entries module from the ground up: a double-entry data model with transaction integrity guarantees and multi-currency handling.
- Supported three entry paths — manual creation, bulk Excel import, and automatic generation triggered by Invoices, Payments and Purchase Orders.
- Built an event-driven integration layer on RabbitMQ that consumes Procurement and Invoicing events and posts journal entries asynchronously, decoupling financial posting from the upstream services.
- Designed 20+ financial reports across ledgers, receivables, payables and multi-currency reconciliation, using SQL aggregations tuned for large transactional datasets.
- Covered the calculation logic, API contracts and background jobs with unit and integration tests.
The outcome
Accounting became a consequence of operations rather than a separate manual step. Balances track in real time, reports stay continuously in sync with upstream modules, and reporting across large ledgers runs on tuned aggregations instead of ad-hoc queries.
- Node.js
- TypeScript
- Express.js
- MySQL
- MongoDB
- RabbitMQ
- SQL Aggregations