A modern, production-ready web application for tracking personal finances, visualizing spending patterns, and managing budgets. Built with React (Vite) on the frontend and FastAPI + PostgreSQL on the backend.
Status: ✅ Completed
- Purpose: Track income and expenses, manage categories and budgets, and surface insights with charts and reports.
- Frontend: React + Vite, Tailwind CSS, ShadCN UI
- Backend: FastAPI, PostgreSQL, Alembic migrations
- Authentication & Authorization – secure signup and login flows.
- Transactions – create, read, update, and delete income/expense entries.
- Categories – manage categories with color and icon support and unique names.
- Dashboard – overview with balances, recent transactions, and quick stats.
- Data Visualization – category breakdown and monthly trend charts.
- User Settings & Preferences – display currency, notification preferences, and theme.
- Reports – view downloadable reports and summaries.
- Responsive UI – works across desktop and mobile screens.
- API Documentation – FastAPI OpenAPI docs available when the backend is running at
/docs.
Follow these steps to run the project locally.
- Clone the repository
git clone https://github.com/alishanawer/personal-finance-dashboard.git
cd personal-finance-dashboard- Frontend
cd frontend
npm install
npm run devFrontend dev server defaults to http://localhost:5173.
- Backend
cd ../backend
python3.12 -m venv venv
source venv/bin/activate
pip install -r requirements.txt- Database
Ensure PostgreSQL is installed and running. Create a database (example: finance_db) and add a .env in backend/ with at least:
DATABASE_URL=postgresql://username:password@localhost:5432/finance_db
SECRET_KEY=your_secret_keyRun migrations (Alembic):
alembic upgrade head- Run backend
uvicorn app.main:app --reloadBackend will be available at http://localhost:8000 and API docs at http://localhost:8000/docs.
- Build frontend for production:
npm run buildinfrontend/and serve the static assets with your preferred static server (or integrate into a Docker image). - Serve the backend with Uvicorn/Gunicorn behind a reverse proxy (NGINX). Configure environment variables and a managed Postgres instance for production.
- Consider using
dockerfor a reproducible deployment: build separate services for frontend and backend and a managed Postgres service.
This repository is in a completed state. Contributions, bug reports, and small improvements are welcome — open a PR or issue.
MIT License
If you'd like, I can also:
- add a
RELEASE.mdor changelog entry summarizing the final features - create a small
deployguide or Docker Compose setup