Platform Overview

High-level overview of the Arya Banking microservices platform.

What is Arya Banking?

Arya Banking is an event-driven microservices platform modelling the core backend of a digital banking application. It is built around a service mesh of independently deployable Spring Boot services coordinated through Spring Cloud infrastructure.

Stack: Spring Boot 3.5.4 · Spring Cloud 2025.0.0 · Java 17 · MongoDB · Confluent Cloud Kafka (SASL_SSL) + Schema Registry · Keycloak · HashiCorp Vault · Eureka · BOM/common 2.0.2


✨ What's New (Sep 06 → Sep 14)

  • Confluent Cloud migration — broker + Schema Registry moved from local Docker to Confluent Cloud (SASL_SSL, USER_INFO); creds via Vault confluent.kafka.*. See Config Server and Kafka & Avro.
  • Common/BOM 2.0.1 → 2.0.2 — 2.0.1: SASL/SSL + basic-auth support, local compose removed; 2.0.2: core:ResponseDto + TopicCreationException. See Common Overview and Maven Registry.
  • Admin Kafka Admin API (kafka-ops) — list/create/describe topics via AdminClient; Vault secrets now batch List<VaultSecret>. See Admin API Reference.
  • Auth/User hardening — spring-cloud-starter-vault-config + BOM 2.0.1+, local spring.kafka.* removed. See Auth Config and User Config.
  • Gateway Swagger fix — /swagger-ui.html + /swagger-ui/index.html now permitAll. See Gateway Security.

🏗️ Core Architecture & Guides

Explore the foundational principles and technical guides that power the Arya Banking platform:

GuideDescription
System ArchitectureComponent roles, data flow patterns, and network layout.
Inter-service CommunicationDetails on Feign, OAuth2 (M2M), and Kafka event flows.
Security ModelComprehensive overview of Keycloak, Vault, and JWT processing.
Infrastructure StackDocker orchestration, networking, and platform setup.
Local Development SetupStep-by-step guide to running the full platform locally.
Outbox PatternTransactional outbox library for reliable Kafka publishing.
Maven RegistryPublishing and consuming internal artifacts via GitHub Packages.

🧩 Microservice Documentation

Each service has its own dedicated documentation covering its specific logic, APIs, and configuration:

ServiceDescriptionDocs
Common LibraryShared domain models, Kafka/Avro schemas, and exceptions (5 modules: core, mongo, kafka, feign, oauth2 — 2.0.2)View Docs →
BOMCentralized dependency version management for all common modules (2.0.2)View Docs →
Metadata LoaderStandalone schema versioning toolView Docs →
API GatewayReactive entry point, JWT validation, and request routingView Docs →
User ServiceMulti-step registration and profile managementView Docs →
Auth ServiceIdentity bridge and Keycloak user managementView Docs →
Admin ServiceInfrastructure + Kafka topic administration, Vault/Keycloak provisioningView Docs →
Config ServerCentralized Spring Cloud configuration layerView Docs →
Service RegistryEureka service discovery serverView Docs →
Outbox ServiceTransactional outbox pattern starter libraryView Docs →
Maven RegistryGitHub Packages artifact registryView Docs →

Repository Map

The platform is distributed across 11 interconnected repositories:

> Text code-highlight
Event-Based-Banking-Application/
│
├── arya-banking/                        ← Documentation site (Next.js)
├── arya-banking-infra/                  ← Docker Compose infra (Kafka, Keycloak, Vault)
├── arya-banking-configs/                ← Centralized Git-backed configuration
│
├── arya-banking-common/                 ← Shared Maven library (5 modules: core, mongo, kafka, feign, oauth2)
├── arya-banking-bom/                    ← Bill of Materials (centralized dependency versions)
├── arya-banking-common-metadata-loader/ ← Standalone metadata schema versioning tool
├── arya-banking-outbox-service/         ← Outbox pattern starter library
├── arya-banking-maven-registry/         ← GitHub Packages Maven registry anchor
│
├── arya-banking-service-registry/       ← Eureka Server (Discovery)
├── arya-banking-config-server/          ← Spring Cloud Config Server
├── arya-banking-api-gateway/            ← Reactive entry point
│
├── arya-banking-user-service/           ← User domain
├── arya-banking-auth-service/           ← Identity bridge
└── arya-banking-admin-service/          ← Infrastructure admin

Quick Reference

ServicePortDescription
API Gateway8085Primary entry point (Docker)
User Service8086User domain (Host)
Auth Service8087Identity bridge (Host)
Admin Service8089Infrastructure admin (Host)
Config Server8090Centralized configuration (Docker)
Vault8091Secrets management + UI (Docker)
Eureka8761Service discovery dashboard (Docker)
Kafkapkc-41p56.asia-south1.gcp.confluent.cloud:9092Confluent Cloud (SASL_SSL, Vault confluent.kafka.api.*)
Schema Registryhttps://psrc-81q7m7.asia-south1.gcp.confluent.cloudConfluent Cloud (USER_INFO, Vault confluent.kafka.schema.*)
Kafka Connect8083Kafka Connect REST API (Docker)
Kafka UI (Kafbat)8080Kafka web UI (Docker)
Keycloak5433IAM admin + auth (Docker)
PostgreSQL5432Keycloak database (Docker)
  • Shared Network: arya-banking-net
  • Infrastructure Runs In: Docker containers via arya-banking-infra (Keycloak, Vault, Eureka, Config Server); Kafka + Schema Registry run on Confluent Cloud
  • Business Services Run On: Host via mvn spring-boot:run
  • Secrets: HashiCorp Vault with AppRole authentication (local vault-credentials.yml) — Mongo, OAuth2, and Confluent confluent.kafka.api/schema.* keys
  • Docs Site: https://event-based-banking-application.github.io/arya-banking/
  • Maven Registry: https://maven.pkg.github.com/Event-Based-Banking-Application/arya-banking-maven-registry
overviewarchitecturemicroservices