A full-stack task management application built with the MERN stack.
- Frontend: React.js, Tailwind CSS, React Router, Axios, @dnd-kit
- Backend: Node.js, Express.js
- Database: MongoDB Atlas (Mongoose ODM)
- Auth: JWT (JSON Web Tokens) + bcryptjs
- User Authentication (Signup / Login / Logout)
- Full CRUD for tasks (Create, Read, Update, Delete)
- Kanban Board with Drag & Drop (Todo → In Progress → Done)
- Priority levels (Low / Medium / High)
- Due dates with overdue highlighting
- Progress Donut Chart
- Real-time search
- Dark Mode
mern-taskboard/
├── backend/ # Express.js API
│ ├── src/
│ │ ├── models/ # Mongoose models (User, Task)
│ │ ├── routes/ # API routes (auth, tasks)
│ │ ├── middleware/ # JWT auth middleware
│ │ └── server.js # Entry point
│ ├── .env.example
│ └── package.json
│
└── frontend/ # React app
├── src/
│ ├── context/ # AuthContext
│ ├── pages/ # Login, Signup, Dashboard
│ └── App.js
├── public/
└── package.json
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /api/auth/signup | Register user | No |
| POST | /api/auth/login | Login user | No |
| GET | /api/auth/me | Get current user | Yes |
| GET | /api/tasks | Get all tasks | Yes |
| POST | /api/tasks | Create task | Yes |
| PUT | /api/tasks/:id | Update task | Yes |
| DELETE | /api/tasks/:id | Delete task | Yes |
name: String
email: String (unique)
password: String (hashed)
user: ObjectId (ref: User)
title: String
description: String
status: todo | in-progress | done
priority: low | medium | high
dueDate: Date
- Go to mongodb.com/atlas → create free account → create cluster
- Get your connection string
cd backend
npm install
cp .env.example .env
# Fill in MONGODB_URI and JWT_SECRET in .env
npm run devcd frontend
npm install
npm start- Backend: Render.com (free tier)
- Frontend: Vercel (free tier)