# Smart Personal Finance Manager This is a Python application that helps people manage their personal finances. It was built to match the assignment requirements for the Smart Personal Finance Manager project. ## Features Implemented - User account creation - Login and logout system with a hashed password storage using `hashlib` - Add income and expense transactions - Transaction details include: - date - amount - category - description - View transactions with filters: - by category - by date - by both category and date - Remove transactions by transaction ID - Set monthly budgets by category - Budget warnings when spending is close to or above the limit - Monthly and yearly reports - Totals for: - income - expenses - savings - expenses by category - Data saved in a JSON file - Data automatically loaded when the program starts - Error handling for: - invalid dates - invalid numbers - missing or corrupted data file - Data visualization with `matplotlib`: - pie chart for spending distribution - line graph for income vs expenses over time - bar chart comparing categories ## Files Included - `main.py` → main Python program - `README.md` → instructions and project summary - `finance_data.json` → created automatically when the program is used - `reports/` → charts are saved here after reports are generated ## How to Run 1. Make sure Python 3 is installed. 2. Install the libraries below if you haven't already: - Matplotlib - Pandas - Json - OS - Datetime - tKinter 3. Run the program: ## Notes - The program runs in the terminal. - Passwords are stored as SHA-256 hashes instead of plain text. - If the data file is damaged or missing, the program starts with empty data instead of crashing. ## Optional Features Completed - Hashed passwords for better security ## Suggested Demo Flow 1. Create an account 2. Log in 3. Add a few income and expense transactions 4. Set a budget for one category 5. Add more expenses to trigger a budget alert 6. Generate a monthly or yearly report 7. Open the chart images from the `reports` folder