Enterprise-grade microservices application for digital bank account opening, deployed on Azure Kubernetes Service (AKS) with full automation, self-healing capabilities, and secure private networking.
- Overview
- Quick Start
- Architecture
- Documentation
- Key Features
- Technology Stack
- Project Structure
- Contributing
- Support
The Bank Account Opening System is a production-ready, cloud-native application that demonstrates enterprise-level microservices architecture deployed on Azure. It provides a complete digital workflow for opening bank accounts, including customer onboarding, document verification, account creation, and notifications.
- Faster Time to Market - Deploy complete infrastructure in 15-20 minutes
- Cost Efficiency - Automated cost management (~$53/month running, ~$1/month stopped)
- High Availability - Kubernetes auto-scaling and self-healing
- Security First - Private networking, secret management, Azure RBAC
- Developer Productivity - One-command deployments, automated testing
- Compliance Ready - Audit logs, security policies, encrypted data
# Start all services with Docker Compose
docker-compose up -d
# Access application
open http://localhost:3000# Deploy to Azure (automated via GitHub Actions)
git push origin main
# OR manual deployment
cd infrastructure/environments/dev
terraform init
terraform applySee: Deployment Guide | Infrastructure Management
- Get application URL from IT/DevOps
- Open browser:
http://<EXTERNAL-IP> - Follow testing scenarios
See: Business User Testing Guide | Application Access
┌─────────────────────────────────────────────────────────────────────────┐
│ BANK CUSTOMER │
│ (Web Browser / Mobile) │
└────────────────────────────────┬────────────────────────────────────────┘
│
│ HTTPS
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ FRONTEND UI (React) │
│ • Customer Registration Form │
│ • Document Upload Interface │
│ • Account Type Selection │
│ • Application Status Tracking │
└────────────────────────────────┬────────────────────────────────────────┘
│
│ REST API
▼
┌───────────────────────┴────────────────────────┐
│ │
▼ ▼
┌──────────────────────┐ ┌──────────────────────┐
│ CUSTOMER SERVICE │◄────────────────────►│ ACCOUNT SERVICE │
│ │ │ │
│ • KYC Verification │ │ • Account Creation │
│ • Customer Profile │ │ • Account Types │
│ • Compliance Checks │ │ • Account Status │
└──────────┬───────────┘ └──────────┬───────────┘
│ │
│ │
▼ ▼
┌──────────────────────┐ ┌──────────────────────┐
│ DOCUMENT SERVICE │ │ NOTIFICATION SERVICE │
│ │ │ │
│ • ID Upload │ │ • Email Alerts │
│ • Proof of Address │ │ • SMS Notifications │
│ • Document Verify │ │ • Status Updates │
└──────────┬───────────┘ └──────────┬───────────┘
│ │
│ │
└──────────────────┬──────────────────────────┘
│
▼
┌────────────────────────┐
│ POSTGRESQL DATABASE │
│ • Customer Data │
│ • Documents Metadata │
│ • Account Records │
│ • Audit Logs │
└────────────────────────┘
BUSINESS WORKFLOW:
1. Customer fills registration form → Customer Service (KYC check)
2. Customer uploads documents → Document Service (verification)
3. System creates account → Account Service (account setup)
4. Customer receives confirmation → Notification Service (email/SMS)
Internet → Azure Load Balancer → AKS Cluster → 4 Microservices → PostgreSQL (Private VNet)
For detailed diagrams: See Technology Deep Dive
- Local Development Guide - Setup and run locally with Docker Compose
- Technology Deep Dive - Architecture, components, network design
- Testing Guide - Automated and manual testing procedures
- Deployment Guide - CI/CD pipeline and deployment procedures
- Infrastructure Management - Create, start, stop, destroy infrastructure
- Infrastructure Explained (Line-by-Line) - Complete line-by-line documentation of all Terraform and Kubernetes files
- Application Access - How to get LoadBalancer IP and access application
- Troubleshooting Guide - Common issues and solutions
- Azure Portal Guide - Using Azure Portal for management
- Cost Optimization Guide - Reduce Azure costs
- Business User Testing Guide - Step-by-step manual testing scenarios
- Application Access - How to access and use the application
- GitHub Environment Setup - Configure GitHub Actions and OIDC
- Terraform State Management - Remote state configuration
- Bash Conversion Summary - PowerShell to Bash migration
✅ Customer Onboarding - Digital registration with KYC verification ✅ Document Management - Secure upload and verification of ID proofs ✅ Account Creation - Multiple account types (Checking, Savings, Money Market) ✅ Notifications - Email/SMS alerts for status updates ✅ Audit Trail - Complete tracking of all operations
✅ Microservices Architecture - 4 independent, scalable services ✅ Cloud-Native - Containerized with Docker, orchestrated with Kubernetes ✅ Secure Private Networking - PostgreSQL with VNet integration (no public access) ✅ Infrastructure as Code - Full Terraform automation ✅ CI/CD Pipeline - GitHub Actions with OIDC authentication ✅ Automated Testing - 6 comprehensive health checks after deployment ✅ Self-Healing - Kubernetes auto-recovery and health checks ✅ Cost Optimized - Start/stop infrastructure to save 85% costs
- React 19.x - Modern UI framework
- React Router - Client-side routing
- Axios - HTTP client
- Nginx - Production web server
- Spring Boot 3.x - Java 17 microservices framework
- Spring Data JPA - Database access layer
- Liquibase - Database migrations
- Spring Boot Actuator - Health checks and monitoring
- Azure Kubernetes Service (AKS) - Container orchestration
- Azure Container Registry (ACR) - Docker image storage
- PostgreSQL 15 Flexible Server - Database (VNet integrated)
- Azure Virtual Network - Private networking
- Azure Load Balancer - Traffic distribution
- Terraform - Infrastructure as Code
- GitHub Actions - CI/CD automation
- Docker & Docker Compose - Local development
- Maven - Java build tool
- Git - Version control
- VS Code - Recommended IDE
accountopening/
├── customer-service/ # Customer management microservice
├── document-service/ # Document upload microservice
├── account-service/ # Account creation microservice
├── notification-service/ # Notification microservice
├── frontend/
│ └── account-opening-ui/ # React frontend application
├── infrastructure/ # Terraform IaC
│ ├── main.tf # Main configuration
│ ├── aks.tf # AKS cluster
│ ├── postgres.tf # PostgreSQL database
│ ├── network.tf # VNet and subnets
│ └── environments/
│ ├── dev/ # Dev environment
│ └── prod/ # Prod environment
├── k8s/ # Kubernetes manifests
│ ├── *-deployment.yaml # Deployments
│ ├── *-service.yaml # Services
│ ├── *-configmap.yaml # ConfigMaps
│ └── *-secret.yaml # Secrets
├── scripts/
│ └── educational/ # Helper scripts
├── docs/ # Documentation
├── docker-compose.yml # Local development
└── README.md # This file
| Service | Port | Purpose | Health Check | Database |
|---|---|---|---|---|
| Customer Service | 8081 | Customer registration & KYC | /actuator/health | customerdb |
| Document Service | 8082 | Document upload & verification | /actuator/health | documentdb |
| Account Service | 8083 | Account creation & management | /actuator/health | accountdb |
| Notification Service | 8084 | Email/SMS notifications | /actuator/health | notificationdb |
| Frontend UI | 80 | React web application | /health | N/A |
| PostgreSQL | 5432 | Database server (private) | TCP check | All databases |
| Scenario | Monthly Cost | Savings |
|---|---|---|
| Running 24/7 | ~$110-135 | - |
| Stopped (nights/weekends) | ~$50-75 | 47% |
| Completely Stopped | ~$10-20 | 85% |
# Stop infrastructure (save money)
cd scripts/educational && ./stop-infra.sh
# Start infrastructure
cd scripts/educational && ./start-infra.sh
# Check status
cd scripts/educational && ./check-infra-status.shFor detailed cost optimization: See Infrastructure Management
-
Create feature branch:
git checkout -b feature/your-feature-name
-
Make changes and test locally:
docker-compose up -d # Test your changes -
Commit with conventional commits:
git commit -m "feat: add new feature" git commit -m "fix: resolve bug" git commit -m "docs: update documentation"
-
Push and create PR:
git push origin feature/your-feature-name
-
Automated deployment to dev:
- Push to
main→ Deploys to dev automatically - Complete UAT testing
- Approve for production deployment
- Push to
For Issues:
- Check Troubleshooting Guide
- Review Documentation for your role
- Check GitHub Issues
- Contact DevOps team
For Questions:
- Technical: See Technology Deep Dive
- Deployment: See Deployment Guide
- Testing: See Testing Guide
# Check all services
cd scripts/educational
./check-services.sh # Local services
./check-infra-status.sh # Azure infrastructure
# Get application URL
kubectl get service frontend-ui -o jsonpath='{.status.loadBalancer.ingress[0].ip}'[Your License Here]
Built with enterprise-grade practices for cloud-native microservices on Azure.
Key Technologies:
- Microsoft Azure (AKS, ACR, PostgreSQL, VNet)
- Kubernetes & Docker
- Spring Boot & React
- Terraform & GitHub Actions
📖 For detailed information, see the Documentation section above.
🚀 Ready to get started? Choose your path:
- Developer: Local Development Guide
- DevOps: Deployment Guide
- Business User: Business User Testing Guide