Spendly is a full-stack expense tracking application built with the MERN stack. It allows users to register, verify their email using OTP, securely authenticate, manage income and expenses, visualize spending analytics, and maintain their profile.
- User registration and login
- Email OTP verification
- Secure password hashing (bcrypt)
- Authentication using cookies/JWT (depending on backend configuration)
- Protected routes
- Add, edit, delete, and search expenses
- Income & expense tracking
- Dashboard with analytics/charts
- Category-wise filtering
- User profile management
- Form validation using Joi
- MongoDB database with Mongoose
- RESTful API
- Responsive React frontend
- React
- Vite
- React Router
- Axios
- Context API
- CSS / Bootstrap
- Node.js
- Express.js
- MongoDB
- Mongoose
- Joi
- bcrypt
- cookie-parser
- cors
- Nodemailer
Expense Tracker/
├── backend/
│ ├── controllers/
│ ├── middleware/
│ ├── models/
│ ├── routes/
│ ├── utils/
│ ├── validators/
│ ├── index.js
│ └── package.json
│
├── frontend/
│ ├── src/
│ │ ├── api/
│ │ ├── components/
│ │ ├── context/
│ │ ├── pages/
│ │ ├── assets/
│ │ └── App.jsx
│ └── package.json
└── README.md
git clone <https://github.com/AbdulMuheetGhouri/Spendly--The-Expense-Tracker.git>
cd Expense Trackercd backend
npm install
npm run devcd frontend
npm install
npm run devCreate .env inside backend.
PORT=3000
MONGO_URI=your_mongodb_connection
JWT_SECRET=your_secret
EMAIL=your_email
EMAIL_PASSWORD=your_email_password
CLIENT_URL=http://localhost:5173Adjust names to match your implementation.
- Register
- Verify OTP
- Login
- Access dashboard
- Manage expenses
- View analytics
- Update profile
- Authentication
- OTP Verification
- Expense Management
- Dashboard Analytics
- Profile
- Validation
- Email Service
| Method | Endpoint | Description |
|---|---|---|
| POST | /register | Register user |
| POST | /login | Login |
| POST | /verifyemail | Verify OTP |
| GET | /me | Current user |
| POST | /expenses | Add expense |
| PUT | /expenses/:id | Update expense |
| DELETE | /expenses/:id | Delete expense |
| GET | /expenses | List expenses |
- Password hashing
- Server-side validation
- Protected routes
- Environment variables
- Authentication middleware
- Export reports
- Budget planning
- Recurring expenses
- Dark mode
- Notifications
- Multi-currency
- Mobile app
Frontend & Backend (Togather):
- Vercel
Database:
- MongoDB Atlas
- Fork
- Create feature branch
- Commit
- Push
- Open Pull Request
Abdul Muheet Ghouri
Computer Engineering Student (MUET) MERN Stack Developer
If you found this project useful, consider giving it a ⭐ on GitHub.