Live demo: https://financetracker-9wbe.onrender.com/
FinanceTracker is a full-stack personal finance web app that lets users register/login, add income/expense transactions, set monthly category budgets, and view basic spending/budget analytics.
- User authentication (register + login) with Argon2 password hashing
- Transactions: add & view income/expense entries (amount, category, date, description)
- Budgets: upsert monthly budgets by category
- Analytics: budget progress (spent vs remaining) computed server-side via SQL aggregation
- Deployed: frontend + backend hosted on Render, database on Supabase Postgres
Backend
- Rust, Axum (REST API)
- SQLx (typed queries + migrations)
- PostgreSQL (Supabase)
- Argon2 (password hashing)
- Serde, Chrono, UUID, Decimal
Frontend
- Vite + (React) frontend
- Fetch-based API client
- Environment-based API base URL
Deployment
- Render (web service + static site)
- Supabase Postgres (with connection pooler/TLS)
POST /users/registerPOST /users/loginPOST /transactionsGET /transactions/:user_idPOST /budgets(upsert)GET /budgets/:user_idGET /budgets/:user_id/progressGET /test(development)
Create a .env file (or export env vars) with:
DATABASE_URL=postgresql://...(Supabase connection string; include?sslmode=requireif needed)PORT=3000(optional; defaults to 3000)
Run migrations:
cargo sqlx migrate run --source backend/migrations