A console-based Personal Finance Manager built in Java, demonstrating strong Object-Oriented Programming principles, clean architecture, and design patterns.
Purpose This project was developed to practice and demonstrate:
- Java OOP (inheritance, abstraction, polymorphism)
- Exception handling
- File I/O and persistence
- Clean architecture and design patterns
Features
- Add income and expenses
- Validate user input with custom exceptions
- Persistent storage using file I/O
- Monthly financial reports
- Category-based summaries
- Console-based interactive menu
Architecture
- Domain Layer: Transaction, Income, Expense
- Service Layer: Business logic and calculations
- Persistence Layer: Repository pattern with file storage
- UI Layer: Console menu using Scanner
Design Patterns Used
- Factory Pattern – Creating transactions from stored data
- Repository Pattern – Decoupling storage from business logic
- Strategy Pattern – Generating different types of reports
Technologies
- Java
- java.time API
- File I/O (BufferedReader / BufferedWriter)
- Git & GitHub