How bakhyzh/esep-api works
Esep API is a wallet and money-transfer platform built around a double-entry ledger, with authentication, account management, transaction history, spending analytics, and transfer notifications. The main workflow is a user signing in, opening an account, and making a transfer or deposit; ledger postings persist the balanced transaction, while an outbox supports Kafka notifications. Analytics also has a separately listed service implementation. The graph uses README workflow and capability statements plus the supplied source excerpts and index; unsampled service wiring is not assumed.
Main entry points: ApiGatewayApplication.java API gateway · AuthService.java Authentication · TransactionProcessor.java Ledger processing · AnalyticsService.java Spending analytics
Components 21
Identity and access
- Authentication
src/main/java/com/esep/auth/AuthService.java - JWT issuance
src/main/java/com/esep/security/TokenService.java - User identity
src/main/java/com/esep/user/User.java
Ledger operations
- Account management
src/main/java/com/esep/account/AccountService.java - Transaction entry
services/ledger-service/src/main/java/com/esep/transaction/TransactionService.java - Ledger processing
services/ledger-service/src/main/java/com/esep/transaction/TransactionProcessor.java - Ledger database
src/main/java/com/esep/transaction/LedgerTransactionRepository.java - Operation history
services/ledger-service/src/main/java/com/esep/transaction/OperationHistoryService.java - Ledger facts
services/ledger-service/src/main/java/com/esep/facts/LedgerFactWriter.java
Events and notifications
- Transactional outbox
src/main/java/com/esep/outbox/TransferEventWriter.java - Kafka
- Notifications
src/main/java/com/esep/notification/NotificationService.java
Analytics and reporting
- Spending analytics
services/analytics-service/src/main/java/com/esep/analytics/AnalyticsService.java - Analytics projection
services/analytics-service/src/main/java/com/esep/projection/AnalyticsProjection.java - Report cache
src/main/java/com/esep/analytics/AnalyticsCache.java
Service platform
- API gateway
services/api-gateway/src/main/java/com/esep/gateway/ApiGatewayApplication.java - Ledger service
services/ledger-service/src/main/java/com/esep/LedgerServiceApplication.java - Analytics service
services/analytics-service/src/main/java/com/esep/AnalyticsServiceApplication.java - Notification service
services/notification-service/src/main/java/com/esep/NotificationServiceApplication.java
Other components
- Wallet user
- Administrator
Connections 21
- Wallet user → Authentication: signs in
README.md - Administrator → Authentication: signs in
README.md - Authentication → User identity: reads and saves
src/main/java/com/esep/auth/AuthService.java - Authentication → JWT issuance: issues token
src/main/java/com/esep/auth/AuthService.java - Wallet user → Account management: opens account
README.md - Account management → User identity: checks owner
src/main/java/com/esep/account/AccountService.java - Wallet user → Transaction entry: requests transfer
README.md - Administrator → Transaction entry: requests deposit
README.md - Transaction entry → Ledger processing: delegates
services/ledger-service/src/main/java/com/esep/transaction/TransactionService.java - Ledger processing → Ledger database: posts transaction
- Wallet user → Operation history: requests history
- Ledger processing → Transactional outbox: writes event
- Transactional outbox → Kafka: publishes events
- Kafka → Notifications: delivers events
- Wallet user → Spending analytics: requests report
README.md - Spending analytics → Analytics projection: queries projection
- Spending analytics → Report cache: uses report cache
README.md - Wallet user → API gateway: sends API request
- API gateway → Ledger service: routes requests
- API gateway → Analytics service: routes requests
- API gateway → Notification service: routes requests