A full-stack personal finance web application built using Agile Scrum methodology over 4 sprints.
Course: SSW/CS 555 β Agile Methods for Software Development | Stevens Institute of Technology | Spring 2026
| Field | Value |
|---|---|
demo@smartfinance.com |
|
| Password | demo123 |
The demo account has admin access β all pages unlocked.
| Name | Role |
|---|---|
| Pranav Ramchandra Auti | Product Owner & Developer |
| Anil Kumar Paruchuri | Scrum Master & Developer |
| Page | What it does |
|---|---|
| π Auth | Register, login with JWT, protected routes, auto logout on 401 |
| π Dashboard | Income/expense summary cards, monthly bar chart, category pie chart, recent transactions |
| πΈ Transactions | Add, edit, delete β filter by keyword/category/type/date range β export as CSV |
| π― Budget | Monthly limits per category, progress bars (green/amber/red), real-time alert banners |
| π¦ Savings Goals | Create goals, visual progress bar, add savings incrementally |
| π Insights | 6-month expense trend line chart, month-over-month % change, category breakdown |
| βοΈ Admin | Platform-wide stats, all users table, category spending breakdown |
Frontend
- React.js 18 (Vite) + React Router v6
- Recharts (BarChart, PieChart, LineChart)
- Axios with JWT interceptors
- Plain CSS with CSS variables β fully mobile responsive
Backend
- Node.js + Express.js
- JWT authentication + bcrypt password hashing
- Knex.js (query builder + migrations + seeds)
Database
- PostgreSQL
Dev Tools
- GitHub (feature-branch workflow β one branch per Jira ticket)
- Jira (SmartFinanceSystem project, 13 user stories)
smartfinance/
βββ client/ # React frontend (Vite)
β βββ src/
β βββ pages/ # Login, Register, Dashboard, Transactions,
β β # Budget, Goals, Insights, Admin
β βββ components/ # Navbar, Sidebar, BudgetAlertBanner,
β β # TransactionForm, TransactionTable, FilterBar,
β β # ProtectedRoute
β βββ context/ # AuthContext (JWT state management)
β βββ api/ # Axios instance with request/response interceptors
βββ server/ # Express backend
β βββ routes/ # auth, transactions, budgets, goals,
β β # categories, admin
β βββ middleware/ # auth.js (JWT verify), isAdmin.js
β βββ db/
β βββ knex.js # Knex connection
β βββ migrations/ # 001_users β 005_goals
β βββ seeds/ # Default categories + demo user + sample data
βββ .env # Environment variables (not committed)
βββ .gitignore
βββ README.md
- Node.js 18+
- PostgreSQL 14+
git clone https://github.com/YOUR_USERNAME/smartfinance.git
cd smartfinanceCreate a .env file in the root:
PORT=5000
DATABASE_URL=postgresql://YOUR_USER:YOUR_PASSWORD@localhost:5432/smartfinance
JWT_SECRET=your_long_random_secret_here
CLIENT_URL=http://localhost:3000CREATE DATABASE smartfinance;# Backend
cd server && npm install
# Frontend
cd ../client && npm installcd server
npx knex migrate:latest
npx knex seed:runSeeds insert:
- 8 default categories (Food, Transport, Housing, Health, Entertainment, Shopping, Savings, Other)
- Demo admin user (
demo@smartfinance.com/demo123) - 22 sample transactions across 3 months
- 6 budget entries + 3 savings goals
Terminal 1 β Backend (port 5000):
cd server && npm run devTerminal 2 β Frontend (port 3000):
cd client && npm run devOpen http://localhost:3000 π
users β id, name, email, password_hash, is_admin, created_at
categories β id, name, user_id (null = global default), color
transactions β id, user_id, type, description, amount, category_id,
date, is_recurring, recurring_frequency, created_at
budgets β id, user_id, category_id, monthly_limit, month, created_at
savings_goals β id, user_id, name, target_amount, saved_amount, deadline, created_at
| Method | Endpoint | Auth | Description |
|---|---|---|---|
| POST | /api/auth/register |
β | Create account |
| POST | /api/auth/login |
β | Login, receive JWT |
| GET | /api/auth/me |
β | Get current user |
| GET | /api/transactions |
β | List with filters |
| POST | /api/transactions |
β | Create transaction |
| PUT | /api/transactions/:id |
β | Update transaction |
| DELETE | /api/transactions/:id |
β | Delete transaction |
| GET | /api/transactions/export/csv |
β | Export as CSV |
| GET | /api/budgets |
β | List budgets |
| GET | /api/budgets/status |
β | Budget usage + % |
| POST | /api/budgets |
β | Create/update budget |
| DELETE | /api/budgets/:id |
β | Delete budget |
| GET | /api/goals |
β | List savings goals |
| POST | /api/goals |
β | Create goal |
| PUT | /api/goals/:id |
β | Update goal |
| GET | /api/categories |
β | List categories |
| GET | /api/admin/stats |
π Admin | Platform stats |
| GET | /api/admin/users |
π Admin | All users |
| GET | /api/admin/category-breakdown |
π Admin | Spending by category |
| Sprint | Dates | Planned | Completed | Status |
|---|---|---|---|---|
| Sprint 1 | Feb 22 β Mar 8, 2026 | 22 pts | 17 pts | Partially Achieved |
| Sprint 2 | Mar 9 β Mar 23, 2026 | 21 pts | 13 pts | Partially Achieved |
| Sprint 3 | Mar 24 β Apr 6, 2026 | 21 pts | 21 pts | β Fully Achieved |
| Sprint 4 | Apr 7 β Apr 20, 2026 | 19 pts | 19 pts | β Fully Achieved |
| Total | 8 weeks | 83 pts | 70 pts | Complete |
| Layer | Platform |
|---|---|
| Frontend | Vercel |
| Backend | Railway |
| Database | Neon (serverless PostgreSQL) |
MIT Β© 2026 Pranav Auti & Anil Paruchuri