How lcsalvess/banking-system works
This is a Spring Boot banking REST backend. Users authenticate and receive JWT-based access; authorized staff then manage clients and accounts or perform and query financial transactions. Those operations persist to PostgreSQL, while scheduled yield, reconciliation, and idempotency maintenance support the transaction lifecycle. Separate capabilities include address-provider lookup and an auditor-facing, snapshot-paged audit trail. The map emphasizes these domain stages and security; source excerpts are partial, so unsampled implementation links are documented by the README or left unasserted.
Main entry points: AuthenticationController.java REST endpoints · TransactionService.java Financial operations · AuthenticationService.java Authentication · AddressLookupService.java Postal providers
Components 22
Access and identity
- REST endpoints
src/main/java/com/lcsalvess/bankingsystem/controller/auth/AuthenticationController.java - Authentication
src/main/java/com/lcsalvess/bankingsystem/service/security/AuthenticationService.java - Login protection
src/main/java/com/lcsalvess/bankingsystem/service/security/ratelimit/RateLimitProtectionService.java - JWT security
src/main/java/com/lcsalvess/bankingsystem/service/security/JwtService.java - User management
src/main/java/com/lcsalvess/bankingsystem/service/user/UserService.java - Current user
src/main/java/com/lcsalvess/bankingsystem/service/security/CurrentUserService.java
Customer banking
- Client management
src/main/java/com/lcsalvess/bankingsystem/service/client/ClientService.java - Address resolution
src/main/java/com/lcsalvess/bankingsystem/service/address/AddressService.java - Postal providers
src/main/java/com/lcsalvess/bankingsystem/integration/address/AddressLookupService.java - Account management
src/main/java/com/lcsalvess/bankingsystem/service/account/AccountService.java
Transactions and operations
- Financial operations
src/main/java/com/lcsalvess/bankingsystem/service/transaction/TransactionService.java - Transaction queries
src/main/java/com/lcsalvess/bankingsystem/service/transaction/query/TransactionQueryService.java - Idempotency
src/main/java/com/lcsalvess/bankingsystem/service/transaction/idempotency/TransactionIdempotencyService.java - Daily yield
src/main/java/com/lcsalvess/bankingsystem/service/transaction/yield/DailyYieldService.java - Balance reconciliation
src/main/java/com/lcsalvess/bankingsystem/service/transaction/balancereconciliation/BalanceReconciliationJob.java
Audit trail
- Audit recording
src/main/java/com/lcsalvess/bankingsystem/service/audit/recording/AuditService.java - Audit queries
src/main/java/com/lcsalvess/bankingsystem/service/audit/query/AuditEventQueryService.java - Query snapshots
src/main/java/com/lcsalvess/bankingsystem/service/audit/query/snapshot/AuditEventQuerySnapshotService.java
Persistence and integrations
- PostgreSQL
- ViaCEP
- BrasilAPI
Other components
- API user
Connections 24
- API user → REST endpoints: sends requests
- REST endpoints → Authentication: handles login
- Authentication → Login protection: checks attempts
src/main/java/com/lcsalvess/bankingsystem/service/security/AuthenticationService.java - Authentication → JWT security: issues tokens
src/main/java/com/lcsalvess/bankingsystem/service/security/AuthenticationService.java - REST endpoints → User management: manages users
- REST endpoints → Client management: manages clients
- Client management → Address resolution: resolves postal codes
src/main/java/com/lcsalvess/bankingsystem/service/client/ClientService.java - Address resolution → Postal providers: looks up addresses
src/main/java/com/lcsalvess/bankingsystem/service/address/AddressService.java - Postal providers → ViaCEP: uses provider
- Postal providers → BrasilAPI: fallback provider
- REST endpoints → Account management: manages accounts
- REST endpoints → Financial operations: initiates operations
- Financial operations → Current user: gets actor
src/main/java/com/lcsalvess/bankingsystem/service/transaction/TransactionService.java - REST endpoints → Transaction queries: queries history
- Transaction queries → Account management: checks account
src/main/java/com/lcsalvess/bankingsystem/service/transaction/query/TransactionQueryService.java - Transaction queries → PostgreSQL: reads transactions
src/main/java/com/lcsalvess/bankingsystem/service/transaction/query/TransactionQueryService.java - Financial operations → Idempotency: guards retries
src/main/java/com/lcsalvess/bankingsystem/service/transaction/idempotency/TransactionIdempotencyService.java - Daily yield → PostgreSQL: records yield
- Balance reconciliation → PostgreSQL: checks balances
- REST endpoints → Audit queries: queries audit trail
- Audit queries → Query snapshots: pages snapshots
src/main/java/com/lcsalvess/bankingsystem/service/audit/query/AuditEventQueryService.java - Query snapshots → PostgreSQL: stores snapshot data
src/main/java/com/lcsalvess/bankingsystem/service/audit/query/snapshot/AuditEventQuerySnapshotService.java - Audit recording → PostgreSQL: records events
- Financial operations → PostgreSQL: persists operations