A personal finance management platform to track income, expenses, and visualize spending patterns with an interactive dashboard.
- Email/Password & Google OAuth authentication
- Add, edit, delete transactions
- Filter transactions by type, category, date range
- Monthly income/expense/balance statistics
- Category-wise pie chart visualization (current month only)
- Custom category creation
- CSV export of all transactions
- Responsive design with Bootstrap 5 & custom CSS
- Smooth animations with Framer Motion
Frontend: React 18, Vite, React Router, Axios, Recharts, Bootstrap 5, Framer Motion, date-fns
Backend: Node.js, Express, MongoDB, Mongoose, JWT, bcryptjs, Google Auth
Styling: Custom CSS with CSS variables (not Tailwind or Bootstrap styling)
Finance Management/
βββ backend/
β βββ config/ # MongoDB connection
β βββ controllers/ # Auth & transaction logic
β βββ models/ # User, Transaction, Category schemas
β βββ routes/ # API endpoints
β βββ middleware/ # JWT verification
β βββ server.js # Express app
β
βββ frontend/
βββ src/
β βββ components/ # Navbar, Stats, Dashboard, Forms, Charts
β βββ pages/ # Home, Login, Signup, Dashboard, 404
β βββ context/ # Auth & Theme contexts
β βββ hooks/ # useAuth, useTransactions
β βββ services/ # API calls
β βββ styles/ # global.css
βββ index.html
- Node.js v14+
- MongoDB (local or MongoDB Atlas)
- Google OAuth credentials
cd backend
npm install
# Create .env file:
# PORT=5000
# MONGODB_URI=mongodb://localhost:27017/finance_management
# JWT_SECRET=your_secret_key_min_32_chars
# GOOGLE_CLIENT_ID=your_google_client_id
# FRONTEND_URL=http://localhost:3000
npm run dev
# Server runs on http://localhost:5000cd frontend
npm install
# Create .env.local file:
# VITE_API_BASE_URL=http://localhost:5000/api
# VITE_GOOGLE_CLIENT_ID=your_google_client_id
npm run dev
# App runs on http://localhost:3000| Method | Endpoint | Description |
|---|---|---|
| POST | /auth/signup |
Register user |
| POST | /auth/login |
Login user |
| POST | /auth/google |
Google OAuth |
| GET | /transactions |
Get all transactions (with filters) |
| POST | /transactions |
Create transaction |
| PUT | /transactions/:id |
Update transaction |
| DELETE | /transactions/:id |
Delete transaction |
| GET | /transactions/stats/monthly |
Monthly stats (income, expense, balance) - CURRENT MONTH ONLY |
| GET | /transactions/stats/category |
Category breakdown - CURRENT MONTH ONLY |
| GET | /transactions/export |
Download CSV |
| GET | /transactions/categories |
Get user categories |
| POST | /transactions/categories |
Create custom category |
User: _id, name, email, password (hashed), googleId, authMethod, timestamps
Transaction: _id, userId, type (income/expense), category, amount, description, date, timestamps
Category: _id, userId, name, type, timestamps
- Dashboard - Main container with stats, form, chart, transaction list
- Stats - 3 cards showing income/expense/balance (CURRENT MONTH)
- TransactionForm - Add transactions with type selector, category dropdown, amount, date
- TransactionList - Table with filters, sorting, pagination (20 per page), CSV export
- CategoryChart - Pie chart visualization (CURRENT MONTH only)
- Navbar - Navigation with user info
- Auth Forms - Login/Signup with Google OAuth
- Income = Sum of all income transactions this month
- Expense = Sum of all expense transactions this month
- Balance = Income - Expense
- Pie chart shows category breakdown (current month)
- All transactions stored permanently
- Filter by type, category, date range
- Sort by date, amount, category
- CSV export includes all transactions
- Users can create custom categories
- Select "Add Custom Category" in TransactionForm
- Categories are type-specific (income/expense)
PORT=5000
NODE_ENV=development
MONGODB_URI=mongodb://localhost:27017/finance_management
JWT_SECRET=your_secret_key_min_32_chars
GOOGLE_CLIENT_ID=your_google_client_id
FRONTEND_URL=http://localhost:3000
VITE_API_BASE_URL=http://localhost:5000/api
VITE_GOOGLE_CLIENT_ID=your_google_client_id
Backend:
npm run dev- Development server with nodemonnpm start- Production server
Frontend:
npm run dev- Development servernpm run build- Production build
ISC License
Built with React, Node.js, and MongoDB | Happy Money Management! π°





