How udaychand348/expense-tracker-backend works
Expense Tracker is a Spring application for user registration/login and personal expense management. Users can register through an OTP validation flow, log in for a JWT, and use authenticated expense/profile endpoints; the expense controller is present, though its implementation was not sampled. OTPs are held in process memory and the code persists users/expenses through Spring Data repositories. The graph shows only relationships evidenced by sampled calls or the source index; unsampled controller behavior and database configuration are not asserted.
Main entry points: UserRepository.java User repository · UserController.java User API · UserService.java User service · UserDetailsServiceImpl.java User details loader
Components 20
API endpoints
- Expense API
src/main/java/com/expense/app/controller/ExpenseController.java - User API
src/main/java/com/expense/app/controller/UserController.java - Profile API
src/main/java/com/expense/app/controller/ProfileController.java - Error handling
src/main/java/com/expense/app/controller/GlobalExceptionHandler.java
Identity and security
- User service
src/main/java/com/expense/app/service/UserService.java - OTP registration
src/main/java/com/expense/app/service/Otpgenerator.java - JWT filter
src/main/java/com/expense/app/loginimp/JwtRequestFilter.java - JWT utilities
src/main/java/com/expense/app/loginimp/JwtUtil.java - User details loader
src/main/java/com/expense/app/loginimp/UserDetailsServiceImpl.java - Security configuration
src/main/java/com/expense/app/loginimp/MyConfig.java
Expense management
- Expense service
src/main/java/com/expense/app/service/ExpenseService.java
Domain and persistence
- Expense records
src/main/java/com/expense/app/entity/Expense.java - User accounts
src/main/java/com/expense/app/entity/User.java - Login and OTP DTOs
src/main/java/com/expense/app/entity/LoginRequest.java - Login response
src/main/java/com/expense/app/entity/LoginResponse.java - OTP request
src/main/java/com/expense/app/entity/Otprequest.java - Expense repository
src/main/java/com/expense/app/repo/ExpenseRepository.java - User repository
src/main/java/com/expense/app/repo/UserRepository.java - Relational database
Other components
- User
Connections 23
- User → User API: registers or logs in
src/main/java/com/expense/app/controller/UserController.java - User API → User service: checks and authenticates
src/main/java/com/expense/app/controller/UserController.java - User API → OTP registration: starts and validates OTP
src/main/java/com/expense/app/controller/UserController.java - User API → User repository: looks up account
src/main/java/com/expense/app/controller/UserController.java - User API → Login response: returns token details
src/main/java/com/expense/app/controller/UserController.java - OTP registration → User repository: saves verified user
src/main/java/com/expense/app/service/Otpgenerator.java - User service → User repository: looks up account
src/main/java/com/expense/app/service/UserService.java - User service → User details loader: loads login identity
src/main/java/com/expense/app/service/UserService.java - User service → JWT utilities: generates token
src/main/java/com/expense/app/service/UserService.java - JWT filter → JWT utilities: extracts and validates
src/main/java/com/expense/app/loginimp/JwtRequestFilter.java - JWT filter → User details loader: loads token identity
src/main/java/com/expense/app/loginimp/JwtRequestFilter.java - Security configuration → JWT filter: configures filter
src/main/java/com/expense/app/loginimp/MyConfig.java - Security configuration → User details loader: configures identity service
src/main/java/com/expense/app/loginimp/MyConfig.java - User details loader → User repository: finds account
src/main/java/com/expense/app/loginimp/UserDetailsServiceImpl.java - Profile API → User service: retrieves profile
src/main/java/com/expense/app/controller/ProfileController.java - Expense API → Expense service: delegates expense actions
src/main/java/com/expense/app/controller/ExpenseController.java - Expense service → User repository: loads account
src/main/java/com/expense/app/service/ExpenseService.java - Expense service → Expense repository: queries and changes expenses
src/main/java/com/expense/app/service/ExpenseService.java - User repository → User accounts: persists accounts
src/main/java/com/expense/app/repo/UserRepository.java - Expense repository → Expense records: persists expenses
src/main/java/com/expense/app/repo/ExpenseRepository.java - Expense records → User accounts: belongs to
src/main/java/com/expense/app/entity/Expense.java - User repository → Relational database: stores records
- Expense repository → Relational database: stores records