CLI application for managing personal finances. Track income and expenses, manage budgets by categories, and get financial statistics.
- User registration and authentication
- Income and expense tracking with categories
- Budget management for expense categories
- Budget remaining balance tracking
- Financial statistics and summaries
- Automatic budget exceeded warnings
- Data persistence in JSON files
- Java 17 or higher
- Maven 3.6+
All dependencies are managed by Maven and will be automatically downloaded during the build process:
- Jackson (JSON serialization) - version 2.15.2
- JUnit 5 (testing) - version 5.10.0
- Checkstyle (code style validation) - version 10.12.5
No manual installation required - Maven handles everything automatically.
- Clone the repository or download the project
- Open terminal in the project directory
- Build the project:
mvn clean compile
- Run the application:
mvn exec:java -Dexec.mainClass="vp.financemanager.cli.FinanceCliApp"
Or compile and run directly:
mvn package
java -cp target/classes vp.financemanager.cli.FinanceCliAppAfter starting, you'll see a command prompt. Type help to see available commands.
register- register a new userlogin- login as existing userlogout- logout current useradd_income- add income transactionadd_expense- add expense transactionset_budget- set budget limit for a categoryshow_budgets- show all budgets with remaining limitsshow_categories- list all categories with budgetsshow_summary- show income/expenses summaryshow_transactions- show transactions with filters (category, date range, type)export_transactions- export transactions to CSV fileimport_transactions- import transactions from CSV filerename_category- rename a category (updates all transactions and budgets)help- show help messageexit- exit the application
Data is automatically saved in the data/ directory:
data/users.json- user list (logins and password hashes)data/wallet_{login}.json- each user's wallet
Data is saved on every change and on application exit. All data is automatically loaded on startup.
The project follows Clean Architecture principles with layer separation:
src/main/java/vp/financemanager/
├── cli/ # CLI interface
├── core/ # Business logic
│ ├── models/ # Domain models
│ ├── service/ # Business services
│ └── repository/ # Repository interfaces
└── infra/ # Infrastructure implementations
└── repository/ # File-based repositories
To run tests:
mvn testThe project uses Checkstyle for code style validation:
mvn checkstyle:checkThe project includes GitHub Actions CI workflow that automatically:
- Builds the project
- Runs all tests
- Checks code style with Checkstyle
The CI runs on every push and pull request to main/master/develop branches.
- Java 17
- Maven
- Jackson (JSON serialization)
- SHA-256 (password hashing)
- JUnit 5 (testing)
- Checkstyle (code style validation)