A full-stack Task Management Application built with React, Node.js, and MongoDB.
Users can register, authenticate, manage their personal tasks, and organize them using both list and Kanban board views.
The system follows a clean full-stack architecture with a React frontend and a Node.js REST API backend.
Frontend: https://task-management-frontend-ma2u.onrender.com
Backend API: https://task-management-s9f1.onrender.com
API Documentation (Swagger): https://task-management-s9f1.onrender.com/api-docs
GitHub Repository: https://github.com/abhilash-io/Task-Management
- React 19
- Vite 7
- React Router 7
- Axios
- TailwindCSS
- React Hook Form
- dnd-kit (Drag & Drop)
- Node.js
- Express.js
- MongoDB
- Mongoose
- JWT Authentication
- Joi Validation
- RESTful API Architecture
- Jest
- Supertest
- MongoDB Memory Server
task-management-app
│
├── frontend
│ ├── src
│ └── README.md
│
├── backend
│ ├── src
│ ├── tests
│ └── README.md
│
├── ARCHITECTURE.md
└── README.md
Each application contains its own README with detailed setup instructions.
Node.js 18 or newer MongoDB running locally or via MongoDB Atlas
The backend must be running before starting the frontend.
Navigate to the backend directory.
cd backend
npm installCreate a .env file:
PORT=5000
DB_URI=mongodb://localhost:27017/task-manager
JWT_ACCESS_SECRET=access_secret_key
JWT_REFRESH_SECRET=refresh_secret_key
ACCESS_TOKEN_EXPIRES=15m
REFRESH_TOKEN_EXPIRES=7d
Start the server:
npm run devBackend runs at:
http://localhost:5000
Open a new terminal and navigate to the frontend directory.
cd frontend
npm installCreate a .env file:
VITE_BACKEND_API_URL=http://localhost:5000/api
Start the development server:
npm run devFrontend runs at:
http://localhost:5173
Authentication
- User registration
- User login
- JWT based authentication
- Protected routes
Task Management
- Create tasks
- Edit tasks
- Delete tasks
- Filter by status
- Filter by priority
- Sort by due date or creation date
Dashboard
- Total task count
- Tasks grouped by status
- Overdue task indicator
Kanban Board
- Drag and drop tasks between columns
- Visual task status
- Responsive layout
Authentication
POST /api/auth/register POST /api/auth/login POST /api/auth/logout
Tasks
GET /api/tasks POST /api/tasks PATCH /api/tasks/:id DELETE /api/tasks/:id
Dashboard
GET /api/tasks/stats
Full API documentation is available through Swagger at:
/api-docs
Backend tests are implemented using Jest and Supertest.
Run tests from the backend directory:
npm run testThe tests use an in-memory MongoDB instance to avoid affecting development data.
An overview of the architectural decisions, folder structure, authentication flow, and database design can be found in:
ARCHITECTURE.md
The backend follows a layered architecture separating routes, controllers, services, and repositories. The frontend follows a component-based structure with React Context for shared state and custom hooks for encapsulating application logic.