A comprehensive console-based Personal Finance Manager that helps users track income, expenses, and generate financial reports. This application demonstrates modular Python programming with robust data management and user authentication.
- Python 3.7 or higher
- pip (Python package manager)
-
Install Required Dependencies
pip install -r requirements.txt
Required packages:
- pandas==2.3.3
- numpy==2.3.4
- python-dateutil==2.9.0.post0
-
Run the Application
python main.py
-
First Time Setup
- The application will automatically create necessary directories and files
- users.json will be created to store user accounts
- database directory will be created for user transaction data
- Multi-user Support: Multiple users can register and maintain separate accounts
- Secure Authentication:
- Password hashing using SHA-256
- Secure password input (hidden characters)
- Password validation (minimum 6 characters, no spaces)
- User Profiles: Each user has a unique ID and dedicated transaction storage
- Add Transactions: Record income or expenses with detailed information
- Date (auto-fills to today if left blank)
- Type (Income/Expense)
- Category (Food, Rent, Salary, etc.)
- Amount (validated for positive numbers)
- Payment Method (Cash, Card, Bank Transfer, Wallet, Other)
- Description (optional)
- View Transactions: Display all transactions in a formatted list
- Edit Transactions: Modify existing transaction details
- Delete Transactions: Remove transactions with confirmation prompt
- Balance Calculation: Real-time income, expense, and net balance tracking
- Search Transactions: Find transactions by keyword in category, payment method, or description
- Advanced Filtering:
- Filter by transaction type (Income/Expense)
- Filter by category
- Filter by date range (start and end dates)
- Filter by amount range (min and max)
- Filter by payment method
- Multiple filters can be combined
- Dashboard Summary:
- Total transactions count
- Total income and expenses
- Average transaction amount
- Monthly Reports: View transactions for a specific month and year
- Category Breakdown: See spending grouped by category
- Spending Trends: Analyze monthly spending patterns over time
- CSV Export: Backup transactions to a separate CSV file in
exports/folder - CSV Import: Import transactions from external CSV files
- Persistent Storage: All data automatically saved to CSV files
- Data Recovery: Handles corrupted JSON files gracefully
- User Profile Overview: Display username and account information
- Financial Summary: Quick view of total income, expenses, and balance
- Recent Transactions: Shows last 3 transactions for quick reference
- Rent Reminder: Special alert if rent expense is recorded
- β CSV Import/Export - Full backup and restore functionality
- β Dashboard with Financial Summary - Real-time financial health overview
- β Bill Reminders - Automated rent payment reminders
- β Advanced Search & Filter - Multiple criteria filtering system
- β Category Breakdown Reports - Detailed spending analysis by category
Main Menu β Select Option 1 (Register)
- Enter your name (alphanumeric only)
- Create a password (minimum 6 characters, no spaces)
- Account created successfully!
Main Menu β Select Option 2 (Login)
- Enter your registered name
- Enter your password
- Dashboard will display automatically
Dashboard Menu β Option 2 (Add Transaction)
Example Input:
- Date: 2025-01-15 (or press Enter for today)
- Type: Expense
- Category: Food
- Amount: 45.50
- Payment Method: Card
- Description: Lunch with colleagues
Dashboard Menu β Option 3 (View Transactions)
Dashboard Menu β Option 4 (Edit Transaction)
1. View all transactions first
2. Enter transaction number to edit
3. Update fields (press Enter to keep current value)
Dashboard Menu β Option 5 (Delete Transaction)
1. View all transactions first
2. Enter transaction number to delete
3. Confirm deletion (y/n)
Dashboard Menu β Option 6 (Reports)
- Dashboard Summary - Overall financial overview
- Monthly Report - Enter month (1-12) and year
- Category Breakdown - Spending by category
- Spending Trends - Monthly spending analysis
- Export to CSV - Creates backup in
exports/folder - Import from CSV - Merge transactions from file
Dashboard Menu β Option 7 (Search)
- Enter keyword to search in category, payment method, or description
Dashboard Menu β Option 8 (Filter)
- Type: Income or Expense (or leave blank)
- Category: specific category (or leave blank)
- Start Date: YYYY-MM-DD format (or leave blank)
- End Date: YYYY-MM-DD format (or leave blank)
- Min Amount: minimum value (or leave blank)
- Max Amount: maximum value (or leave blank)
- Payment Method: specific method (or leave blank)
Reports Menu β Option 5
- Exports all transactions to: database/[username]_[id]/exports/transactions_export.csv
Reports Menu β Option 6
- Enter full path to CSV file
- Transactions will be appended to your existing data
Dashboard Menu β Option 9 (Logout)
- Returns to main menu
python-project/
βββ main.py # Main application entry point
βββ requirements.txt # Python dependencies
βββ users.json # User accounts (auto-generated)
βββ modules/
β βββ user_manager.py # User registration and login
β βββ transaction_manager.py # Transaction CRUD operations
β βββ reports_manager.py # Reports and analytics
β βββ dashboard_manager.py # Dashboard display
β βββ data_handler.py # File I/O operations
β βββ utils.py # Password hashing utilities
βββ database/
βββ [username_userid]/ # Per-user folders
βββ transactions.csv # User transaction data
βββ exports/ # Export destination
βββ transactions_export.csv
- Regular Backups: Use the export feature weekly to backup your data
- Consistent Categories: Use standardized category names for better reports
- Date Format: Always use YYYY-MM-DD format for dates
- Amount Entry: Enter amounts without currency symbols (e.g., "45.50" not "$45.50")
- Search Effectively: Use partial words in search (e.g., "foo" finds "Food")
- Filter Smart: Combine multiple filters to narrow down results
- Review Dashboard: Check dashboard regularly for financial health overview
pip install -r requirements.txt- Ensure you're running from the project root directory
- Application will auto-create necessary files
- Application will automatically recreate the file
- Previous user accounts will be lost
- Check for backup files
- Verify CSV file has correct columns: Date, Type, Category, Amount, Payment Method, Description
- Ensure file path is absolute or relative to project root
- Check file encoding is UTF-8
- Verify write permissions in database/ directory
- Check available disk space
- Ensure CSV file is not open in another program