A full-stack personal finance tracker built with the MERN stack. WealthWise helps users track income, expenses, and savings with a clean, responsive, and professional UI — featuring real-time charts, transaction management, CSV export, and dark/light mode.
Live Demo → wealthwisebd.netlify.app
Users can export all their transactions as a
.csvfile, which opens directly in Excel or Google Sheets with full data including date, type, category, note, and amount.
| Technology | Purpose |
|---|---|
| React 18 + Vite | UI framework & build tool |
| Tailwind CSS v4 | Utility-first styling |
| DaisyUI v5 | Component library & theming |
| React Router v7 | Client-side routing |
| Firebase Auth | Authentication (Email + Google) |
| Axios | HTTP client |
| Recharts | Charts & data visualization |
| React Hook Form | Form handling & validation |
| React Toastify | Toast notifications |
| React Fast Marquee | Marquee animations |
| ImgBB API | Profile image upload |
| Technology | Purpose |
|---|---|
| Node.js + Express.js | REST API server |
| MongoDB Atlas | Cloud database |
| Mongoose | MongoDB ODM |
| CORS | Cross-origin resource sharing |
| dotenv | Environment variable management |
| Service | Purpose |
|---|---|
| Netlify | Frontend hosting |
| Vercel | Backend API hosting |
| MongoDB Atlas | Database hosting |
- Authentication — Email/password register & login, Google OAuth via Firebase
- Dashboard Overview — Live balance, income, expense & savings rate stat cards
- Charts — Balance growth (12-month area chart), income vs expenses (bar chart), spending categories (pie chart)
- Transaction Management — Add, edit, delete transactions with category, type, date & note
- Filters & Search — Filter by type (income/expense), category, and search by keyword
- Pagination — Server-side paginated transaction list (10 per page)
- CSV Export — Download all transactions as
.csv— opens in Excel with date, type, category, note, amount columns - Profile Management — Update display name and profile photo (uploaded to ImgBB)
- Dark / Light Mode — Toggle with persistent preference saved to localStorage
- Responsive Design — Fully mobile-friendly across all pages
- Protected Routes — Dashboard, transactions, and profile require authentication
| Page | Route | Protected |
|---|---|---|
| Home (Landing) | / |
No |
| Pricing | /pricing |
No |
| Login | /login |
No |
| Register | /register |
No |
| Dashboard Overview | /dashboard/overview |
Yes |
| Transactions | /dashboard/transactions |
Yes |
| Add / Edit Transaction | /dashboard/transaction |
Yes |
| Profile | /dashboard/profile |
Yes |
| Method | Endpoint | Description |
|---|---|---|
POST |
/users |
Create or upsert a user |
GET |
/users/:uid |
Get user by Firebase UID |
PATCH |
/users/:uid |
Update name, photo, currency, budget |
| Method | Endpoint | Description |
|---|---|---|
POST |
/transactions |
Add a new transaction |
GET |
/transactions/:uid |
Get paginated transactions (?page=1&limit=10) |
PATCH |
/transactions/:id |
Edit a transaction by ID |
DELETE |
/transactions/:id |
Delete a transaction by ID |
- Node.js v18+
- MongoDB Atlas account
- Firebase project with Email/Password and Google auth enabled
git clone https://github.com/your-username/wealthwise.git
cd wealthwisecd server
npm installCreate a .env file in /server:
MONGO_DB_URI=your_mongodb_connection_string
PORT=3000Start the server:
npm run devcd client
npm installCreate a .env file in /client:
VITE_API_URL=http://localhost:3000
VITE_APIKEY=your_firebase_api_key
VITE_AUTHDOMAIN=your_firebase_auth_domain
VITE_PROJECTID=your_firebase_project_id
VITE_STORAGEBUCKET=your_firebase_storage_bucket
VITE_MESSAGINGSENDERID=your_firebase_messaging_sender_id
VITE_APPID=your_firebase_app_id
VITE_IMGBB_API_KEY=your_imgbb_api_keyStart the frontend:
npm run dev- Push to GitHub
- Connect repo on netlify.com
- Build command:
npm run build - Publish directory:
dist - Add all
VITE_*environment variables in Netlify → Site settings → Environment variables - Add a
public/_redirectsfile with:/* /index.html 200
- Push to GitHub
- Import project on vercel.com
- Add
MONGO_DB_URIin Vercel environment variables - Add a
vercel.json:
{
"version": 2,
"builds": [{ "src": "index.js", "use": "@vercel/node" }],
"routes": [{ "src": "/(.*)", "dest": "index.js" }]
}Go to Firebase Console → Authentication → Settings → Authorized domains → Add your Netlify domain:
your-app.netlify.app
- Payment gateway integration (Stripe / SSLCommerz)
- Auto-update user plan status after real payment
- Email confirmation after purchase
- Plan expiry and renewal system
- Recurring transactions
- Monthly PDF report generation
- Budget alerts and spending limits
- Multi-currency support
- 404 animated SVG — Original by Jon Kantner on CodePen
MIT © WealthWise

