A comprehensive web application for tracking personal expenses, managing budgets, and visualizing financial data, built with Django and Python.
- User Authentication: Secure registration, login, and profile management
- Expense Management: Create, view, update, and delete expenses with categories
- Budget Planning: Set budgets for different categories with period tracking
- Interactive Dashboard: Visualize spending patterns with charts and graphs
- Data Filtering: Sort and filter expenses by date, category, and amount
- Responsive Design: Works on desktop and mobile devices
- Receipt Uploads: Attach receipts to expense entries
- Export Functionality: Download expense reports as CSV or PDF
- Backend: Django + Python
- Database: SQLite (development) / PostgreSQL (production)
- Frontend: Django Templates, Bootstrap 5, JavaScript
- Data Visualization: Chart.js
- Forms: django-crispy-forms
-
Clone the repository
git clone <repository-url> cd expense-tracker
-
Create a virtual environment
python -m venv venv # On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activate
-
Install dependencies
pip install -r requirements.txt
-
Configure the database
# For SQLite (default) python manage.py migrate # For PostgreSQL (edit settings.py first) # Uncomment the PostgreSQL config and set your credentials
-
Create a superuser
python manage.py createsuperuser
-
Run the development server
python manage.py runserver
-
Access the application
- Open your browser and navigate to
http://127.0.0.1:8000/ - Admin interface:
http://127.0.0.1:8000/admin/
- Open your browser and navigate to
expense_tracker/
├── expense_tracker/ # Main project folder
│ ├── settings.py # Project settings
│ ├── urls.py # Main URL configurations
│ └── ...
├── expenses/ # Expense tracking app
│ ├── models.py # Expense and Category models
│ ├── views.py # Expense views and logic
│ ├── forms.py # Expense forms
│ └── ...
├── budgets/ # Budget management app
│ ├── models.py # Budget models
│ ├── views.py # Budget views and logic
│ └── ...
├── dashboard/ # Dashboard visualization app
│ ├── views.py # Dashboard views and charts
│ └── ...
├── users/ # User management app
│ ├── models.py # Extended user profile model
│ ├── views.py # User authentication views
│ └── ...
├── templates/ # HTML templates
├── static/ # Static files (CSS, JS, images)
└── media/ # User uploaded files (receipts)
- Register an account on the application
- Set up expense categories (e.g., Food, Transportation, Utilities)
- Add your expenses with dates, amounts, and optional receipts
- Create budgets for different categories
- Visualize your spending on the dashboard
- Generate reports to analyze your financial habits
To contribute to this project:
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature-name - Submit a pull request
For production deployment:
- Set
DEBUG = Falseinsettings.py - Configure a production-ready database (PostgreSQL recommended)
- Set up a proper web server (Nginx, Apache) with WSGI
- Configure static and media file serving
- Set up SSL for secure communication
This project is licensed under the MIT License - see the LICENSE file for details.