⚡ Note: Backend is hosted on Render's free tier — first load may take ~30 seconds to spin up.
Add a demo GIF here — record your screen using Loom or any screen recorder, convert at ezgif.com, and drop the file in the repo.
- 🔐 JWT Authentication — Secure register/login with bcrypt password hashing
- 💰 Income & Expense Tracking — Add, view, and delete financial entries
- 📊 Interactive Dashboard — Visual charts and financial summaries using Recharts
- 🖼️ Profile Picture Upload — Multer-powered image upload support
- 📥 Export to Excel — Download your financial data as
.xlsx - 📱 Responsive UI — Works across desktop and mobile
| Layer | Technology |
|---|---|
| Frontend | React 19, Vite, Tailwind CSS, Recharts, React Router |
| Backend | Node.js, Express.js |
| Database | MongoDB (Mongoose ODM) |
| Auth | JWT, Bcrypt |
| File Upload | Multer |
| Deployment | Vercel (frontend), Render (backend) |
expense-tracker/
├── backend/
│ ├── controllers/ # Route handlers (auth, transactions)
│ ├── models/ # Mongoose schemas (User, Transaction)
│ ├── routes/ # Express route definitions
│ ├── middleware/ # JWT auth middleware
│ └── server.js # Entry point
│
└── frontend/
└── expense-tracker/
├── src/
│ ├── components/ # Reusable UI components
│ ├── pages/ # Dashboard, Login, Register
│ └── context/ # Auth & data context
└── vite.config.js
- Node.js v18+
- MongoDB instance (local or MongoDB Atlas)
git clone https://github.com/Athang69/Expense-Tracker.git
cd Expense-Trackercd backend
npm installCreate a .env file based on .env.example:
PORT=8000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_keynpm run devBackend runs at http://localhost:8000
cd frontend/expense-tracker
npm install
npm run devFrontend runs at http://localhost:5173
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/auth/register |
Register new user |
| POST | /api/v1/auth/login |
Login & receive JWT |
| GET | /api/v1/auth/getUser |
Get current user profile |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/income/addIncome |
Add income entry |
| GET | /api/v1/income/getIncome |
Get all income |
| DELETE | /api/v1/income/:id |
Delete income entry |
| POST | /api/v1/expense/addExpense |
Add expense entry |
| GET | /api/v1/expense/getExpense |
Get all expenses |
| DELETE | /api/v1/expense/:id |
Delete expense entry |
PORT=8000
MONGO_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/expense-tracker
JWT_SECRET=your_super_secret_key