A comprehensive Spring Boot application for managing personal finances, tracking expenses, setting savings goals, and generating financial reports.
- Secure user registration and authentication using JWT
- User profile management
- Password encryption using BCrypt
- Track income and expenses
- Categorize transactions
- View transaction history
- Update and delete transactions
- Real-time balance tracking
- Set personalized savings targets
- Track progress towards financial goals
- Monitor goal achievements
- Category-specific goal tracking
- Progress visualization
- Monthly spending analysis
- Category-wise expense breakdown
- Visual representations using charts
- Daily spending trends
- Income vs. expense comparisons
Component | Technology |
---|---|
Backend | Spring Boot 3.4.1 |
Security | Spring Security, JWT |
Database | H2 Database |
Build Tool | Maven |
Charts | JFreeChart |
API Documentation | Swagger/OpenAPI |
git clone https://github.com/yourusername/personal-finance-manager.git
cd personal-finance-manager
./mvnw clean install
./mvnw spring-boot:run
The application will start on: http://localhost:8080
POST /api/users/register
- Register new userPOST /api/users/login
- User loginGET /api/users/profile
- Get user profile
POST /api/transactions/{userId}
- Add new transactionGET /api/transactions/{userId}
- Get user transactionsPUT /api/transactions/{transactionId}
- Update transactionDELETE /api/transactions/{transactionId}
- Delete transaction
POST /api/savings-goals/{userId}
- Create savings goalGET /api/savings-goals/{userId}
- Get user's savings goalsGET /api/savings-goals/{goalId}/progress
- Get goal progress
GET /api/reports/monthly/{userId}/charts/spending-category
- Get category-wise spending chartGET /api/reports/monthly/{userId}/charts/spending-trend
- Get spending trend chart
The application implements comprehensive security measures:
- JWT-based authentication
- Password encryption
- Secure endpoints
- CORS configuration
- Session management
- Java 17 or higher
- Maven 3.6 or higher
- IDE (IntelliJ IDEA recommended)
Modify application properties in src/main/resources/application.properties