How ajr2004/nexusbank works
NexusBank is a Spring microservices banking platform. A customer’s main workflow enters through the API gateway, authenticates through the identity service, then uses banking account and transaction operations or applies for a loan. Loan approval creates an EMI schedule and credits the customer’s banking account; scheduled billing later requests installment debits. The graph also captures identity and service-discovery capabilities documented in the README. Service-layer calls and repository interactions are supported by sampled source; gateway routing and Eureka registration are documented, but their detailed wiring was not sampled.
Main entry points: ApiGatewayApplication.java API gateway · LoanService.java Loan service · AccountService.java Account service · TransactionService.java Transaction service
Components 28
Gateway and discovery
- API gateway
api-gateway/src/main/java/com/nexusbank/api_gateway/ApiGatewayApplication.java - Authentication filter
api-gateway/src/main/java/com/nexusbank/api_gateway/filter/AuthenticationFilter.java - Gateway JWT utility
api-gateway/src/main/java/com/nexusbank/api_gateway/util/JwtUtils.java - Eureka discovery
eureka-server/src/main/java/com/nexusbank/eureka_server/EurekaServerApplication.java
Identity and access
- Identity endpoints
identity-service/src/main/java/com/nexusbank/identity_service/controller/UserController.java - User administration
identity-service/src/main/java/com/nexusbank/identity_service/controller/AdminUserManagementController.java - User service
identity-service/src/main/java/com/nexusbank/identity_service/service/UserService.java - JWT service
identity-service/src/main/java/com/nexusbank/identity_service/security/JwtService.java - User repository
identity-service/src/main/java/com/nexusbank/identity_service/repository/UserRepository.java
Accounts and transactions
- Account endpoints
banking-service/src/main/java/com/nexusbank/banking_service/controller/AccountController.java - Account service
banking-service/src/main/java/com/nexusbank/banking_service/service/AccountService.java - Transaction service
banking-service/src/main/java/com/nexusbank/banking_service/service/TransactionService.java - Identity client
banking-service/src/main/java/com/nexusbank/banking_service/client/IdentityClient.java - Account repository
banking-service/src/main/java/com/nexusbank/banking_service/repository/AccountRepository.java - Transaction repository
banking-service/src/main/java/com/nexusbank/banking_service/repository/TransactionRepository.java
Loans and billing
- Loan endpoints
loan-service/src/main/java/com/nexusbank/loan_service/controller/LoanController.java - Loan type admin
loan-service/src/main/java/com/nexusbank/loan_service/controller/AdminLoanTypeController.java - Loan service
loan-service/src/main/java/com/nexusbank/loan_service/service/LoanService.java - EMI schedule service
loan-service/src/main/java/com/nexusbank/loan_service/service/EmiService.java - EMI billing scheduler
loan-service/src/main/java/com/nexusbank/loan_service/scheduler/EmiAutomationEngine.java - Banking client
loan-service/src/main/java/com/nexusbank/loan_service/client/BankingClient.java - Loan identity client
loan-service/src/main/java/com/nexusbank/loan_service/client/IdentityClient.java - Loan repository
loan-service/src/main/java/com/nexusbank/loan_service/repository/LoanRepository.java - EMI repository
loan-service/src/main/java/com/nexusbank/loan_service/repository/EmiRepository.java - Loan type repository
loan-service/src/main/java/com/nexusbank/loan_service/repository/LoanTypeRepository.java
Other components
- Customer
- Administrator
- MySQL
Connections 37
- Customer → API gateway: sends requests
- Administrator → API gateway: sends requests
- API gateway → Authentication filter: filters requests
- Authentication filter → Gateway JWT utility: validates tokens
- API gateway → Identity endpoints: routes requests
- API gateway → Account endpoints: routes requests
- API gateway → Loan endpoints: routes requests
- Identity endpoints → User service: delegates
- User administration → User service: delegates
- User service → User repository: reads and writes
- User service → JWT service: issues tokens
- User repository → MySQL: persists users
- Account endpoints → Account service: delegates
- Account endpoints → Transaction service: delegates
- Account service → Identity client: checks users
- Account service → Account repository: reads and writes
- Account service → Transaction repository: records activity
- Transaction service → Identity client: gets current user
- Transaction service → Account repository: reads and writes
- Transaction service → Transaction repository: reads and writes
- Account repository → MySQL: persists accounts
- Transaction repository → MySQL: persists transactions
- Loan endpoints → Loan service: delegates
- Loan type admin → Loan service: delegates
- Loan service → Loan repository: reads and writes
- Loan service → Banking client: checks accounts
- Loan service → Loan identity client: fetches user
- Loan service → EMI schedule service: generates schedule
- EMI schedule service → EMI repository: reads and writes
- EMI billing scheduler → EMI repository: loads and updates dues
- EMI billing scheduler → Loan repository: loads loan details
- EMI billing scheduler → Banking client: requests debit
- Banking client → Account service: requests disbursement or debit
- Loan repository → MySQL: persists loans
- EMI repository → MySQL: persists installments
- Loan type repository → MySQL: persists loan types
- API gateway → Eureka discovery: uses discovery