A full-stack MERN application with authentication and task management.
Built using MongoDB, Express, React (Vite), Node.js**, with JWT authentication, TailwindCSS, and Render deployment support.
- User authentication (register/login/logout) with JWT
- Protected routes with role-based access (Admin, User)
- Task CRUD (create, read, update, delete)
- Responsive UI built with React + TailwindCSS
- Backend API built with Express + MongoDB (Mongoose)
- Environment-variable-driven configuration
- Frontend: React (Vite), TailwindCSS, Axios, React Router
- Backend: Node.js, Express.js, MongoDB (Mongoose), JWT
- Database: MongoDB Atlas
mern-assignment/ ├── backend/ # Express + MongoDB API │ ├── models/ # Mongoose schemas │ ├── routes/ # API routes │ ├── controllers/ # Route controllers │ ├── middleware/ # Auth & error middleware │ ├── config/db.js # MongoDB connection │ └── server.js # App entry point │ └── frontend/ # React (Vite) client ├── src/ # Components, pages ├── public/ # Static assets └── vite.config.js
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_secret_key
CLIENT_URL=http://localhost:5173
### Frontend (`/frontend/.env`)
VITE_API_BASE=http://localhost:5000
## 🖥 Local Development
git clone https://github.com/ManavShelar/mern-assignment.git
cd mern-assignmentcd backend
npm install
npm run devcd frontend
npm install
npm run dev
## 🚀 Deployment (Render)- Build Command:
cd backend && npm install - Start Command:
cd backend && npm start - Env Vars:
PORT=10000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_secret_key
CLIENT_URL=https://your-frontend.onrender.com
-
Build Command:
cd frontend && npm install && npm run build -
Publish Directory:
frontend/dist -
Env Vars:
VITE_API_BASE=https://your-backend.onrender.com
POST /api/v1/auth/register→ register userPOST /api/v1/auth/login→ login userPOST /api/v1/auth/logout→ logout user
GET /api/v1/tasks→ get all tasks (protected)POST /api/v1/tasks→ create taskPUT /api/v1/tasks/:id→ update taskDELETE /api/v1/tasks/:id→ delete task
- Deploy backend first → get backend URL.
- Deploy frontend → set
VITE_API_URLto backend URL. - Update backend
CLIENT_URLto frontend URL.