Skip to content

Aashutosh-Mahajan/finbuddy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FinBuddy

FinBuddy is a full-stack personal finance assistant with three agents: Transaction Watchdog, Income Manager, and Investment Strategist. It includes a FastAPI backend and a React + Vite frontend.

Features

  • Dashboard with real weekly activity, trends, and snapshot
  • Transactions upload and random/demo seeding
  • Agent insights: transaction watchdog, income manager, investment strategist
  • Investment calculators (FD, RD, SIP) and product comparisons
  • Goals and wallet with XP/levels

Quick Start

Prerequisites

  • Python 3.10+ (your environment uses 3.14)
  • Node.js 18+

Backend (FastAPI)

  1. Install deps:
    Set-Location "D:\Finbuddy\finbuddy\backend"; C:/Python314/python.exe -m pip install -r requirements.txt
  2. Environment: create backend/.env (ignored by git):
    SECRET_KEY=change_me
    ALGORITHM=HS256
    DATABASE_URL=sqlite:///./finbuddy.db
    OPENAI_API_KEY=
    
  3. Run dev server:
    C:/Python314/python.exe -m uvicorn --app-dir "D:\Finbuddy\finbuddy\backend" main:app --reload

Frontend (React + Vite)

  1. Install deps:
    Set-Location "D:\Finbuddy\finbuddy\frontend"; npm install
  2. Start dev:
    npm run dev
    The frontend uses a dev proxy to backend at http://127.0.0.1:8000/api.

Auth Flow

  • Register: POST /api/register → returns JWT
  • Login: POST /api/login → returns JWT
  • Attach token as Authorization: Bearer <token>

Demo Data

  • Seed random transactions for the logged-in user:
    $base = "http://127.0.0.1:8000"; $headers = @{ Authorization = "Bearer <token>" }
    Invoke-RestMethod -Method POST -Uri "$base/api/transactions/seed-random?days=30&per_day=4&income_ratio=0.35&min_amount=100&max_amount=4000" -Headers $headers
  • Seed from CSV at repo root: POST /api/transactions/seed-sample

Key Endpoints

  • Dashboard: /api/dashboard/snapshot, /api/dashboard/weekly-activity, /api/dashboard/trends
  • Transactions: /api/transactions, /api/transactions/upload, /api/transactions/seed-random, /api/transactions/seed-sample
  • Agents: /api/agents/full-analysis, /api/agents/transaction-watchdog, /api/agents/income-manager, /api/agents/investment-strategist
  • Investments: /api/investments/* (rates, projections, calculators, recommendations)
  • Goals & Wallet: /api/goals, /api/wallet

Development Notes

  • Run uvicorn from backend dir or use --app-dir to avoid import errors.
  • Without DATABASE_URL, backend falls back to SQLite backend/finbuddy.db.
  • If OpenAI key is absent, agents use robust fallbacks for investment data.

Security & Repo Hygiene

  • .env, .env.*, .env.example are ignored via root .gitignore.
  • History was purged to remove secrets; rotate any keys if previously exposed.

Troubleshooting

  • If main:app import fails, start with --app-dir "D:\Finbuddy\finbuddy\backend".
  • Frontend dev port conflicts: Vite may choose 5174; check console output.
  • 401 Unauthorized: ensure the frontend stores and attaches the JWT.

License

Internal project. Do not distribute.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published