A full-stack Expense Tracker built with the MERN Stack that helps users manage their personal finances through an intuitive dashboard, secure authentication, transaction management, and insightful visualizations.
- User Registration
- User Login
- JWT Authentication
- Protected Routes
- Public Routes
- Refresh Token Authentication
- Forgot Password via Email
- Password Reset using Secure Reset Link
- Logout
- Total Balance
- Total Income
- Total Expenses
- Total Transactions
- Monthly Income Comparison
- Monthly Expense Comparison
- Monthly Balance Comparison
- Monthly Transaction Comparison
- Interactive Charts & Analytics
- Add Transaction
- Edit Transaction
- Delete Transaction
- Search Transactions
- View Recent Transactions
- Dedicated Transaction History Page
- Food
- Transport
- Entertainment
- Shopping
- Rent
- Bills & Utilities
- Healthcare
- Education
- Travel
- Technology
- Gifts
- Other
- Salary
- Freelance
- Investments
- Bonus
- Refund
- Gifts
- Other
- Dark Mode
- Toast Notifications
- Responsive Dashboard
- Modern UI
- Sidebar Navigation
- Avatar Dropdown
- Authentication Pages
- Charts & Analytics
- React
- React Router DOM
- Tailwind CSS
- Axios
- React Hot Toast
- Lucide React
- Recharts
- Node.js
- Express.js
- MongoDB
- Mongoose
- JWT
- bcrypt
- Nodemailer
Expense-Tracker
β
βββ backend
β βββ src
β β βββ config
β β β βββ db.js
β β β βββ generateToken.js
β β β βββ mail.js
β β β
β β βββ controllers
β β β βββ authController.js
β β β βββ TransactionController.js
β β β
β β βββ middleware
β β β βββ protect.js
β β β
β β βββ models
β β β βββ Transaction.js
β β β βββ User.js
β β β
β β βββ routes
β β β βββ authRoutes.js
β β β βββ transactionRoutes.js
β β β
β β βββ index.js
β β
β βββ .env
β βββ package.json
β βββ package-lock.json
β
βββ frontend
β βββ public
β β
β βββ src
β β βββ components
β β β βββ charts
β β β β βββ Charts.jsx
β β β βββ AddTransactionModal.jsx
β β β βββ Avatar.jsx
β β β βββ Header.jsx
β β β βββ ProtectedRoute.jsx
β β β βββ PublicRoute.jsx
β β β βββ Sidebar.jsx
β β β βββ StatCard.jsx
β β β βββ Summary.jsx
β β β βββ TransactionRow.jsx
β β β βββ TransactionTable.jsx
β β β
β β βββ pages
β β β βββ DashBoard.jsx
β β β βββ ForgotPassword.jsx
β β β βββ Login.jsx
β β β βββ Register.jsx
β β β βββ ResetPassword.jsx
β β β βββ TransactionPage.jsx
β β β
β β βββ App.jsx
β β βββ main.jsx
β β βββ index.css
β β
β βββ .env
β βββ index.html
β βββ package.json
β βββ package-lock.json
β
βββ README.md
Before running the project, make sure you have installed:
- Node.js (v18 or above)
- npm
- MongoDB Atlas (or a local MongoDB instance)
- Git
- A Gmail account with an App Password (for password reset emails)
git clone https://github.com/Asmit-06/Expense-Tracker.git
cd Expense-Trackercd backend
npm installcd ../frontend
npm installPORT=3000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
JWT_REFRESH_SECRET=your_refresh_secret
JWT_RESET_SECRET=your_reset_secret
EMAIL=your_email@gmail.com
EMAIL_PASSWORD=your_google_app_password
CLIENT_URL=http://localhost:5173VITE_API_URL=http://localhost:3000cd backend
npm run devServer runs at:
http://localhost:3000
Open another terminal.
cd frontend
npm run devApplication runs at:
http://localhost:5173
Visit
http://localhost:5173
Register a new account and start tracking your expenses.
- Register a new account
- Login securely
- Add income and expense transactions
- Categorize transactions
- Search transactions
- Edit or delete transactions
- Track monthly financial summaries
- Visualize spending using charts
- Toggle between Dark and Light mode
- Reset forgotten password via email
- Register User
- Login
- Generate Access Token
- Generate Refresh Token
- Protected API Routes
- Automatic Token Refresh
- Forgot Password Email
- Secure Password Reset
- Logout
- Budget Planning
- Expense Breakdown by Category
- Export Reports (CSV/PDF)
- Email Notifications
- User Profile Management
- Multi-Currency Support
- Recurring Transactions
- Mobile Responsive Improvements
Developed as a Full Stack MERN project to strengthen frontend, backend, authentication, and API development skills.