How floortjetjeertes/krachbankapi works
KrachBank API is a Spring Boot banking backend. Clients authenticate or register, then call REST endpoints for users, accounts, and transactions. Controllers validate and translate requests, services apply banking operations, and JPA repositories persist users, accounts, and transfers in the documented H2 store. JWT security protects authenticated requests. The sampled files confirm controller ownership and several integrations; service-to-repository links reflect the corresponding implementation modules, while transaction business rules were not sampled.
Components 24
REST API
- Authentication Controller
src/main/java/com/krachbank/api/controllers/AuthenticationController.java - Account Controller
src/main/java/com/krachbank/api/controllers/AccountController.java - Transaction Controller
src/main/java/com/krachbank/api/controllers/TransactionController.java - User Controller
src/main/java/com/krachbank/api/controllers/UserController.java - Request DTOs
src/main/java/com/krachbank/api/dto/DTO.java
Domain Services
- Authentication Service
src/main/java/com/krachbank/api/service/AuthenticationServiceJpa.java - User Service
src/main/java/com/krachbank/api/service/UserServiceJpa.java - Account Service
src/main/java/com/krachbank/api/service/AccountServiceJpa.java - Transaction Service
src/main/java/com/krachbank/api/service/TransactionJpa.java
Persistence Layer
- User Repository
src/main/java/com/krachbank/api/repository/UserRepository.java - Authentication Repository
src/main/java/com/krachbank/api/repository/AuthenticationRepository.java - Account Repository
src/main/java/com/krachbank/api/repository/AccountRepository.java - Transaction Repository
src/main/java/com/krachbank/api/repository/TransactionRepository.java - H2 Database
- Database Seeder
src/main/java/com/krachbank/api/seeders/DatabaseSeeder.java
Security
- JWT Service
src/main/java/com/krachbank/api/service/JwtService.java - JWT Filter
src/main/java/com/krachbank/api/security/JwtAuthenticationFilter.java - Web Security
src/main/java/com/krachbank/api/configuration/WebSecurityConfiguration.java - User Details Loader
src/main/java/com/krachbank/api/service/UserDetailsServiceImpl.java
Banking Domain
- Account Model
src/main/java/com/krachbank/api/models/Account.java - Transaction Model
src/main/java/com/krachbank/api/models/Transaction.java - User Model
src/main/java/com/krachbank/api/models/User.java - IBAN Generator
src/main/java/com/krachbank/api/configuration/IBANGenerator.java
Other components
- API Client
Connections 32
- API Client → Authentication Controller: sends credentials
- API Client → Account Controller: manages accounts
- API Client → Transaction Controller: submits transfers
- API Client → User Controller: manages users
- Authentication Controller → Request DTOs: reads requests
- Account Controller → Request DTOs: returns DTOs
- Transaction Controller → Request DTOs: maps DTOs
- User Controller → Request DTOs: returns DTOs
- Authentication Controller → User Service: registers users
- Authentication Controller → Authentication Service: authenticates users
- Account Controller → IBAN Generator: generates IBANs
- Account Controller → Account Service: manages accounts
- Transaction Controller → Account Service: resolves accounts
- Transaction Controller → Transaction Service: creates transfers
- User Controller → User Service: manages users
- User Controller → Account Service: loads accounts
- Authentication Service → Authentication Repository: finds credentials
- Authentication Service → JWT Service: creates tokens
- User Service → User Repository: stores users
- Account Service → Account Repository: stores accounts
- Transaction Service → Transaction Repository: stores transfers
- JWT Filter → JWT Service: validates tokens
- JWT Filter → User Details Loader: loads principals
- Web Security → JWT Filter: dispatches filter
- User Details Loader → User Repository: loads users
- User Repository → H2 Database: persists users
- Authentication Repository → H2 Database: persists users
- Account Repository → H2 Database: persists accounts
- Transaction Repository → H2 Database: persists transfers
- Database Seeder → User Repository: seeds users
- Database Seeder → Account Repository: seeds accounts
- Database Seeder → Transaction Repository: seeds transfers