Skip to content

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Finance Tracker

A full-stack personal finance dashboard that connects to real bank accounts via Plaid, syncs transactions, and displays them in a dark-mode dashboard.

Dashboard screenshot

Features

  • Email/password authentication (JWT)
  • Bank account connection via Plaid Link
  • Transaction sync with duplicate-safe incremental updates
  • Category filtering
  • Monthly spending / income summary cards

Tech stack

Backend: Python, FastAPI, SQLAlchemy, PostgreSQL, Plaid API, Docker Compose (local Postgres/Redis) Frontend: Next.js, React, TypeScript, Tailwind CSS

Notes

  • Auth tokens are held in memory (React state), not localStorage. This avoids exposing the JWT to XSS, but loses user session on page refresh.
  • Only one connected bank account is supported per user for this MVP.
  • Redis is provisioned in local dev (docker-compose.yml) for a planned background-job queue, but isn't used by the app yet, so not deployed to production for that reason.
  • To be deployed via Vercel and Railway

Running locally

Requirements: Docker, Python 3.11+, Node 18+

git clone <your-repo-url>
cd finance-tracker

# Postgres + Redis
docker-compose up -d

# Backend
cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
alembic upgrade head
uvicorn app.main:app --reload

# Frontend (new terminal)
cd frontend
npm install
npm run dev

Backend runs at http://localhost:8000, frontend at http://localhost:3000.

You'll need your own Plaid sandbox API keys — see backend/app/config.py for required environment variables.

Roadmap

Category charts, an LLM-powered spending advisor, and multi-bank support are planned but out of scope for this MVP.

Releases

Packages

Contributors

Languages