This is a comprehensive internet banking system built with Spring Boot microservices architecture, providing a full-featured banking API infrastructure for financial operations.
-
User Service - Handles all user operations including registrations and retrieval, consuming Keycloak REST API for user management while utilizing a local PostgreSQL database.
-
Fund Transfer Service - Manages all fund transfers between accounts and pushes messages to a centralized RabbitMQ queue for the Notification service.
-
Payment Service - Includes all API endpoints for processing utility payments and sends notification messages to RabbitMQ.
-
Notification Service - (pending) Registered under the service registry, consumes messages from RabbitMQ and pushes necessary notifications.
-
Banking Core Service - Provides core banking functionality with account management, user profiles, transaction processing, and banking operation handlers.
-
API Gateway - Provides a unified entry point for all microservices with routing and security capabilities.
-
Service Registry – Netflix Eureka server for service discovery and registration.
-
Config Server – Spring Cloud Config server backed by Git repository for centralized configuration management.
- Java 21
- Spring Boot 3.2.4
- Spring Cloud 2023.0.0
- Netflix Eureka (Service Discovery)
- Spring Cloud Gateway (API Routing)
- Spring Cloud Config (Centralized Configuration)
- Zipkin (Distributed Tracing)
- Spring Cloud Sleuth (Log Correlation)
- OpenFeign (Declarative REST Client)
- RabbitMQ (Message Broker)
- MySQL (Primary Data Store)
- PostgreSQL (Keycloak Database)
- Keycloak (Identity & Access Management)
- Docker / Docker Compose (Containerization)
- Repository cloning:
$ git clone https://github.com/dishembitov/FinFlow.git- Navigate to Docker configuration directory:
$ cd FinFlow/docker-compose-
Start application using docker-compose:
-
Launch the application stack using Docker Compose:
$ docker-compose up -d| Container | IP | Port Mapping |
|---|---|---|
| openzipkin_server | 172.25.0.12 | 9411 |
| keycloak_web | 172.25.0.11 | 8080 |
| keycloak_postgre_db | 172.25.0.10 | 5432(Closed Port) |
| mysql_dishembitov_app | 172.25.0.9 | 3306 |
| finflow-config-server | 172.25.0.8 | 8090 |
| finflow-service-registry | 172.25.0.7 | 8081 |
| finflow-api-gateway | 172.25.0.6 | 8082 |
| finflow-user-service | 172.25.0.5 | 8083 |
| finflow-fund-transfer-service | 172.25.0.4 | 8084 |
| finflow-utility-payment-service | 172.25.0.3 | 8085 |
| core-banking-service | 172.25.0.2 | 8092 |
A comprehensive Postman collection is available for API testing:
Import the collection and select the LOCAL_DOCKER_SETUP environment configuration.
The system comes pre-configured with test data including:
- Demo accounts and user profiles in the core banking database
- Pre-configured Keycloak instance with realms, clients, and user credentials
Begin testing with the AUTHENTICATION endpoint in the finflow collection.
Test Login Credentials: ib_admin@mail.com / password
