All Projects
03Polyglot financial workflowsPersonal project

E-Invoice Platform (Nx Monorepo)

Transactional Outbox & Kafka Event Streaming

Enterprise invoicing with NestJS, Nx, Apache Kafka event streaming, polyglot persistence, and gRPC internal communication.

View source on GitHub
NxNestJSKafkaPostgreSQLMongoDBDocker

Nx Monorepo

Kafka Topics

Transactional Outbox

Polyglot DB

The engineering problem

Core Challenge

Maintaining strict financial auditability while allowing concurrent invoice queries.

Architecture Solution

Outbox Pattern with Kafka change events populating an immutable MongoDB audit log.

Resilience Guardrail

Transactional outbox ensures atomic DB write and Kafka dispatch.

Service topology & IPC protocols

Frontend BFF

Aggregates billing & invoice state for UI

GraphQL / REST

Invoice Core

Tax calculation, legal validation, PostgreSQL ACID

PostgreSQL

Transactional Outbox

Polls outbox table and dispatches to Kafka

Kafka Producer

Immutable Audit Log

Append-only compliance audit trail in MongoDB

Kafka Consumer
  • BFF — aggregates queries for dashboards
  • Invoice Core — relational state & tax engine in PostgreSQL
  • Audit — append-only immutable ledger in MongoDB
  • Payment Dispatcher — Kafka consumer for multi-gateway transfers
  • Shared Kernel — common DTOs and proto definitions

Canonical event / payload contract

application/json
{
  "topic": "finance.invoice.issued",
  "partition": 2,
  "offset": 441029,
  "key": "inv_882901",
  "value": {
    "invoiceId": "inv_882901",
    "customerTaxId": "TRN-991209-BD",
    "amount": 14500.00,
    "currency": "BDT",
    "status": "ISSUED",
    "checksum": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
  }
}

Resilience & high availability

Transactional Outbox Pattern: Eliminates dual-write inconsistencies between PostgreSQL entity creation and Kafka messaging.
Kafka Topic Partitioning: Invoices partitioned by tenant ID guarantees strict in-order processing.
Nx Monorepo Caching: Shared DTO and Protobuf libraries built with computation caching.
Immutable Audit Trail: Write-only MongoDB replica ensures non-repudiation for financial audits.
Nx affected builds with shared libsKafka topic partitionsTransactional Outbox pattern