Back

LeCore Banking Platform

An event-driven retail banking platform built for financial correctness, recoverable payments, and operational control.

AngularSpring BootASP.NET CoreKafkaPostgreSQLRedisKubernetes
LeCore Banking Platform dashboard screenshot

9

Backend Services

2

Banking Portals

Double-entry

Ledger Model

Kubernetes

Deployment

Overview

A service oriented banking system with separate customer and operations portals, balanced double-entry accounting, idempotent payment workflows, immutable audit history, and independent reconciliation.

The Problem

  • Prevent double spending and reject unbalanced journal entries while deriving balances from durable accounting records
  • Recover from ledger timeouts without charging a customer twice or losing a payment between services
  • Give operations teams a searchable audit trail and an independent payment to ledger reconciliation view
  • Keep retail users and privileged operational tooling isolated behind explicit access controls

The Solution

  • Separated identity, customer, account, payment, ledger, audit, and reconciliation into accountable service boundaries
  • Implemented idempotent payment and ledger commands with durable outbox events and deduplicating Kafka consumers
  • Built distinct Angular portals for customers and operations staff behind a single policy enforcing API gateway
  • Created an independent ASP.NET Core reconciliation service that correlates payment events with ledger postings

Architecture Overview

High level architecture of the application.

Key Highlights

Balanced double-entry journal posting
Idempotent, retry safe payment workflows
Customer registration and internal transfers
KYC review and controlled account funding
Immutable audit event history
Payment to ledger reconciliation queues
Role protected operations portal
Metrics, health checks, and distributed tracing

Challenges

  • Coordinating a payment lifecycle across independently deployed services without distributed database transactions
  • Handling at least once event delivery and out of order messages without duplicating financial effects
  • Distinguishing short event delivery delays from genuine reconciliation exceptions
  • Enforcing gateway only access and least privilege network paths across a Kubernetes deployment

Results

  • Delivered a complete retail journey for registration, account visibility, and internal transfers
  • Made financial correctness explicit through atomic balanced postings and idempotent references
  • Equipped operations staff with customer, KYC, account, payment, audit, and reconciliation workflows
  • Established cluster-ready deployment boundaries with probes, resource limits, network policies, and observability

What I Learned

  • Financial correctness belongs in the domain model, not in infrastructure conventions
  • Independent controls need events that carry enough financial facts to verify an outcome
  • Eventual consistency needs explicit timing rules so transient delays do not become false incidents
  • Operational screens are essential product features in a distributed financial system