How shivam-a-coder/wallet works
This is a Spring-based wallet application split into user, wallet, transaction, and notification services. The clearest user journey is creating a user, then retrieving a profile that combines cached or persisted user data with a wallet balance fetched over HTTP. Transaction initiation persists a pending transaction and publishes an event; Kafka consumers and shared payload types support asynchronous service behavior. The README names the services but does not document their full event choreography, so only relationships evidenced by sampled source or the source index are shown.
Main entry points: UserService.java User management · TransactionService.java Transaction processing · WalletKafkaConsumer.java Wallet event consumer · WalletRepo.java Wallet repository
Components 23
User service
- User API
user-service/src/main/java/com/Project/UserController.java - User management
user-service/src/main/java/com/Project/service/UserService.java - User record
user-service/src/main/java/com/Project/entity/User.java - User repository
user-service/src/main/java/com/Project/repo/UserRepo.java - Profile result
user-service/src/main/java/com/Project/Dto/UserProfile.java
Wallet service
- Wallet API
wallet-service/src/main/java/com/Project/WalletController.java - Balance lookup
wallet-service/src/main/java/com/Project/service/WalletService.java - Wallet event consumer
wallet-service/src/main/java/com/Project/WalletKafkaConsumer.java - Wallet record
wallet-service/src/main/java/com/Project/entity/Wallet.java - Wallet repository
wallet-service/src/main/java/com/Project/repo/WalletRepo.java
Transaction service
- Transaction API
transaction-service/src/main/java/com/Project/TransactionController.java - Transaction processing
transaction-service/src/main/java/com/Project/TransactionService.java - Transaction record
transaction-service/src/main/java/com/Project/entity/Transaction.java - Transaction repository
transaction-service/src/main/java/com/Project/repo/TransactionRepo.java - Compensation consumer
transaction-service/src/main/java/com/Project/TransactionCompConsumer.java
Notification service
- Notification consumer
notification-service/src/main/java/com/Project/NotificationKafkaConsumer.java
Shared events
- User-created payload
common-libs/src/main/java/com/Project/UserCreatedPayload.java - Wallet-update payload
common-libs/src/main/java/com/Project/WalletUpdatePayload.java - Transaction payload
common-libs/src/main/java/com/Project/TransactionPayload.java
Other components
- API client
- Kafka
- Redis
- Relational database
Connections 27
- API client → User API: calls API
README.md - User API → User management: delegates to
user-service/src/main/java/com/Project/UserController.java - User management → User repository: reads and saves
user-service/src/main/java/com/Project/service/UserService.java - User management → Redis: reads and caches
user-service/src/main/java/com/Project/service/UserService.java - User management → Wallet API: fetches balance
user-service/src/main/java/com/Project/service/UserService.java - User management → Profile result: builds profile
user-service/src/main/java/com/Project/service/UserService.java - User management → User-created payload: builds payload
user-service/src/main/java/com/Project/service/UserService.java - User management → Kafka: publishes event
user-service/src/main/java/com/Project/service/UserService.java - User repository → Relational database: persists users
- Wallet API → Balance lookup: delegates to
wallet-service/src/main/java/com/Project/WalletController.java - Balance lookup → Wallet repository: looks up wallet
wallet-service/src/main/java/com/Project/service/WalletService.java - Wallet repository → Relational database: persists wallets
- Wallet event consumer → Wallet repository: updates wallet
wallet-service/src/main/java/com/Project/WalletKafkaConsumer.java - Wallet event consumer → Wallet record: uses record
wallet-service/src/main/java/com/Project/WalletKafkaConsumer.java - Wallet event consumer → Kafka: consumes events
- Transaction API → Transaction processing: delegates to
- Transaction API → Transaction record: accepts request
transaction-service/src/main/java/com/Project/TransactionController.java - Transaction processing → Transaction repository: saves and reads
transaction-service/src/main/java/com/Project/TransactionService.java - Transaction processing → Transaction record: creates record
transaction-service/src/main/java/com/Project/TransactionService.java - Transaction processing → Kafka: publishes transaction
transaction-service/src/main/java/com/Project/TransactionService.java - Transaction repository → Relational database: persists transactions
- Compensation consumer → Transaction repository: updates records
transaction-service/src/main/java/com/Project/TransactionCompConsumer.java - Compensation consumer → Kafka: consumes events
- Notification consumer → Kafka: consumes events
- User-created payload → Kafka: event schema
- Wallet-update payload → Kafka: event schema
- Transaction payload → Kafka: event schema