Friendly, data‑driven expense tracking with analytics, budgets, recurring payments, and rich visualizations.
- Overview
- Key Features
- Demo / Screenshots
- Tech Stack
- Architecture
- Installation
- Usage
- Configuration
- Roadmap
- License
- Contact
Expense Tracker is a full‑stack web application to record, categorize, and analyze personal spending. It helps you:
- Understand where your money goes
- Track recurring expenses and subscriptions
- Visualize spending trends over time
- Export/Import data for backups or migration
With a clean UI, fast search, and actionable charts, Expense Tracker makes daily budgeting effortless.
- Authentication with JWT: Secure login and protected endpoints.
- Expense CRUD: Add, edit, delete, and search expenses.
- Categories & Tags: Organize spending by category and keyword.
- Recurring Payments: Automate periodic expenses (daily, weekly, monthly, yearly).
- Dashboards & Analytics: Summaries, trends, and category breakdowns.
- Interactive Charts: Visualize monthly and category spend.
- Reports: Overview and detailed history views.
- CSV Import/Export: Move data easily via CSV (powered by PapaParse).
- Responsive UI: Modern, mobile‑friendly layout with Tailwind CSS.
- API Fallback: If backend is unavailable, selected features gracefully fallback to local storage for demos.
Dashboard — at‑a‑glance overview of spending
Add Expenses — fast input with categories and notes
History — filterable, searchable list of all transactions
Recurring — manage subscriptions and periodic expenses
Reports — category and time‑based analytics
- Frontend: React 18, TypeScript, Vite, React Router, Tailwind CSS, Recharts, React Hot Toast
- Backend: Django 4.2, Django REST Framework, Simple JWT, django‑cors‑headers, Pillow
- Database: SQLite (dev). Easily swappable to PostgreSQL/MySQL.
- Auth: JWT tokens via DRF SimpleJWT
- Utilities: Axios, date‑fns, PapaParse
flowchart LR
subgraph Frontend
A[React + Vite]
D[Recharts]
E[Tailwind]
end
subgraph Backend
B[Django REST API]
F[JWT Auth]
end
C[(Database: SQLite / Postgres / MySQL)]
A -->|Axios / JSON| B
B -->|ORM| C
A --> D
A --> E
B --> F
- Frontend handles UI, routing, and data fetching via Axios
- Backend exposes RESTful endpoints (JWT‑protected)
- Database persists users, expenses, categories, and recurring rules
- Visualization uses Recharts for interactive insights
Prerequisites: Node.js 18+ (preferably 20+), Python 3.10+, Git
- Clone the repository
git clone <your-repo-url>
cd Expense_Tracker- Backend setup (Django)
# (Windows PowerShell)
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r backend/requirements.txt
# Migrate DB and create a superuser
cd backend
python manage.py migrate
python manage.py createsuperuser- Frontend setup (React + Vite)
cd .. # back to project root
npm install- Start the backend (Django runs on
http://localhost:8000)
cd backend
python manage.py runserver- Start the frontend (Vite runs on
http://localhost:5173by default)
cd ..
npm run dev- Build frontend for production
npm run buildLogin with your superuser or register via the app. Protected API calls require a valid JWT; the frontend automatically attaches stored tokens.
- API Base URL: The frontend targets the Django API at
http://localhost:8000/api.- Update
src/services/api.tsconstantAPI_BASE_URLif your backend host/port differs.
- Update
- CORS: Ensure your backend allows the frontend origin (configured via
django-cors-headers). - Database: Default is SQLite (see
backend/settings.py). For Postgres/MySQL, updateDATABASESsettings and install the appropriate driver.
- Budgets and alerts (monthly/weekly limits)
- Multi‑currency support and FX conversions
- Advanced filtering and saved views
- Export to XLSX and Google Sheets
- PWA support and offline mode
- Dark mode and theme presets
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
- Author: Buildwith.18
- GitHub: github.com/Buildwith18
- Email: buildwith.18@gmail.com
If you find this useful, consider starring the repo. Thanks!