How hanzunii/ubx-banking-system works
UBX Banking is a distributed banking system: users and administrators act through web, Android, or desktop clients; the gateway handles REST, sessions, and real-time updates; and the RMI core performs banking operations against its database. The README documents discovery, MFA, idempotent transfers, and live balance pushes. Legacy atm-server is a separate, superseded implementation. Some client and core subsystems are represented by their exact source directories because their implementation files were not sampled.
Main entry points: GatewayController.java REST controller · RmiBridgeController.java RMI bridge endpoints · ApiClient.java Android API client · TransactionServiceImpl.java Transactions
Components 28
Client applications
- Web banking
web-app/src/pages - Web routing and auth
web-app/src/App.jsx - Android banking
atm-android/app/src/main/java/com/atm/mobile/ui - Android API client
atm-android/app/src/main/java/com/atm/mobile/network/ApiClient.java - Gateway discovery
atm-android/app/src/main/java/com/atm/mobile/network/ServerDiscovery.java - Admin console
admin-desktop/src/main/java/com/atm/admin/DashboardFrame.java - Admin API client
admin-desktop/src/main/java/com/atm/admin/AdminService.java
API gateway
- REST controller
api-gateway/src/main/java/com/atm/gateway/controller/GatewayController.java - JWT and security
api-gateway/src/main/java/com/atm/gateway/security/JwtUtil.java - Transfer idempotency
api-gateway/src/main/java/com/atm/gateway/service/IdempotencyService.java - RMI banking adapter
api-gateway/src/main/java/com/atm/gateway/service/RmiBankingService.java - Live balance push
api-gateway/src/main/java/com/atm/gateway/service/RealtimePusher.java - Account WebSocket
api-gateway/src/main/java/com/atm/gateway/websocket/AccountSocketHandler.java - UDP discovery responder
api-gateway/src/main/java/com/atm/gateway/service/DiscoveryResponder.java
RMI banking core
- RMI bridge endpoints
rmi-server/src/main/java/com/atm/rmi/server/RmiBridgeController.java - Authentication and MFA
rmi-server/src/main/java/com/atm/rmi/service/AuthServiceImpl.java - Account operations
rmi-server/src/main/java/com/atm/rmi/service/AccountServiceImpl.java - Transactions
rmi-server/src/main/java/com/atm/rmi/service/TransactionServiceImpl.java - Account administration
rmi-server/src/main/java/com/atm/rmi/service/AdminServiceImpl.java
Core persistence
- Customer records
rmi-server/src/main/java/com/atm/rmi/repository/CustomerRepository.java - Transaction records
rmi-server/src/main/java/com/atm/rmi/repository/TransactionRepository.java
Legacy server
- Legacy authentication
atm-server/src/main/java/com/atm/server/service/AuthService.java - Legacy banking operations
atm-server/src/main/java/com/atm/server/service/BankingService.java - Legacy account endpoints
atm-server/src/main/java/com/atm/server/controller/AccountController.java - Legacy auth endpoints
atm-server/src/main/java/com/atm/server/controller/AuthController.java - Legacy data store
atm-server/src/main/java/com/atm/server/DatabaseManager.java
Other components
- Bank user
- System admin
Connections 29
- Bank user → Web banking: uses
README.md - Bank user → Android banking: uses
README.md - System admin → Admin console: uses
README.md - Web routing and auth → Web banking: routes to
web-app/src/App.jsx - Web banking → REST controller: sends REST
README.md - Android banking → Android API client: requests through
atm-android/app/src/main/java/com/atm/mobile/MainActivity.java - Android API client → REST controller: sends REST
README.md - Android API client → Gateway discovery: resolves server
atm-android/app/src/main/java/com/atm/mobile/network/ApiClient.java - Gateway discovery → UDP discovery responder: probes
README.md - Admin console → Admin API client: uses
admin-desktop/src/main/java/com/atm/admin/AdminService.java - Admin API client → REST controller: calls REST
admin-desktop/src/main/java/com/atm/admin/AdminService.java - REST controller → JWT and security: issues tokens
api-gateway/src/main/java/com/atm/gateway/controller/GatewayController.java - REST controller → Transfer idempotency: records results
api-gateway/src/main/java/com/atm/gateway/controller/GatewayController.java - REST controller → RMI banking adapter: invokes banking
api-gateway/src/main/java/com/atm/gateway/controller/GatewayController.java - REST controller → Live balance push: pushes updates
api-gateway/src/main/java/com/atm/gateway/controller/GatewayController.java - Account WebSocket → Live balance push: delivers updates
- REST controller → RMI bridge endpoints: calls RMI services
README.md - RMI bridge endpoints → Authentication and MFA: delegates auth
rmi-server/src/main/java/com/atm/rmi/server/RmiBridgeController.java - RMI bridge endpoints → Account operations: delegates account
rmi-server/src/main/java/com/atm/rmi/server/RmiBridgeController.java - RMI bridge endpoints → Transactions: delegates transfers
rmi-server/src/main/java/com/atm/rmi/server/RmiBridgeController.java - RMI bridge endpoints → Account administration: delegates admin
rmi-server/src/main/java/com/atm/rmi/server/RmiBridgeController.java - Authentication and MFA → Customer records: reads and writes
rmi-server/src/main/java/com/atm/rmi/service/AuthServiceImpl.java - Transactions → Customer records: updates balances
rmi-server/src/main/java/com/atm/rmi/service/TransactionServiceImpl.java - Transactions → Transaction records: stores transactions
rmi-server/src/main/java/com/atm/rmi/service/TransactionServiceImpl.java - Account administration → Customer records: manages accounts
rmi-server/src/main/java/com/atm/rmi/service/AdminServiceImpl.java - Legacy auth endpoints → Legacy authentication: delegates auth
atm-server/src/main/java/com/atm/server/controller/AuthController.java - Legacy account endpoints → Legacy banking operations: delegates banking
atm-server/src/main/java/com/atm/server/controller/AccountController.java - Legacy authentication → Legacy data store: uses persistence
- Legacy banking operations → Legacy data store: uses persistence