Welcome to the Kanban Project β a streamlined and intuitive tool inspired by Trello, designed to help you organize, collaborate, and track your projects efficiently.
The Kanban Project is a full-stack application developed to simplify project management. It provides a visually organized workspace to manage your projects, track tasks, collaborate with team members, and store notes. Whether youβre planning a new product launch or tracking daily tasks, the Kanban Project keeps you in control.
Server:
-
Node.js: The backbone of the server-side application.
-
Express.js: A lightweight framework for building robust APIs.
-
MongoDB: A scalable NoSQL database for storing data efficiently.
-
Cloudinary: For seamless media storage and management.
-
JavaScript: The heart of the application.
-
React (Vite): For a fast and reactive user interface.
-
TailwindCSS: To build beautiful and modern designs effortlessly.
-
Redux: For centralized state management.
-
Create, update, and delete projects.
-
Add and manage team members for each project.
-
Collaborate seamlessly with your team.
-
Store important notes for quick access.
-
CRUD functionality to add , edit and delete notes.
-
Organize tasks into three categories:
-
To-Do: Plan and list upcoming tasks.
-
In-Progress: Track ongoing tasks.
-
Done: Celebrate completed tasks
- User registration and login with secure credentials.
GET /api/v1/healthcheck/ POST /api/v1/users/register| Parameter | Type | Description |
|---|---|---|
fullname |
string |
Required. The full name of the user |
email |
string |
Required. The email address of the user (must be unique) |
username |
string |
Required. The desired username (must be unique) |
password |
string |
Required. The password for the account |
avatar |
file |
Required. Profile image of the user, uploaded via multipart/form-data |
GET /api/v1/users/verify/:token| Parameter | Type | Description |
|---|---|---|
token |
string |
Required. The email verification token |
POST /api/v1/users/login| Parameter | Type | Description |
|---|---|---|
email |
string |
Required. The name of the email |
password |
string |
Required. The name of the password |
GET /api/v1/users/resend-mail| Parameter | Type | Description |
|---|---|---|
email |
string |
Required. User's email address |
POST /api/v1/users/refresh-token| Parameter | Type | Description |
|---|---|---|
refreshToken |
string |
Required. The refresh token issued during login |
POST /api/v1/users/forgot-password| Parameter | Type | Description |
|---|---|---|
email |
string |
Required. User's email address |
POST /api/v1/users/change-password| Parameter | Type | Description |
|---|---|---|
oldPassword |
string |
Required. Old Password is required |
newPassword |
string |
Required. New Password is required |
GET /api/v1/users/profile POST /api/v1/users/logout-
Create, update, and delete projects.
-
Manage team members by adding and removing them.
GET /api/v1/project/projects/| Parameter | Type | Description |
|---|---|---|
userId |
string |
Required. Automatically extracted from authentication token (req.user). |
GET /api/v1/project/projects/:projectId| Parameter | Type | Description |
|---|---|---|
projectId |
string |
Required. The ID of the project to fetch |
POST /api/v1/project/projects/| Parameter | Type | Description |
|---|---|---|
title |
string |
Required. Title of the project |
description |
string |
Required. Detailed description of the project |
createdBy |
string |
Required. ID of the user creating the project |
POST /api/v1/project/update/:projectId| Parameter | Type | Description |
|---|---|---|
projectId |
string |
Required. ID of the project to update (in URL params) |
title |
string |
Required. Updated title of the project |
description |
string |
Required. Updated description of the project |
createdBy |
string |
Required. ID of the user updating the project |
DELETE /api/v1/project/delete/:projectId| Parameter | Type | Description |
|---|---|---|
projectId |
string |
Required. ID of the project to delete (URL params) |
POST /api/v1/project/projects/:projectId/members| Parameter | Type | Description |
|---|---|---|
projectId |
string |
Required. ID of the project to which the member is added (URL params) |
userId |
string |
Required. ID of the user to add as a project member (Body) |
role |
string |
Required. Role of the member in the project (Body) |
GET /api/v1/project/projects/:projectId/members| Parameter | Type | Description |
|---|---|---|
projectId |
string |
Required. ID of the project to fetch members from (URL params) |
DELETE /api/v1/project/projects/:projectId/remove/:memberId| Parameter | Type | Description |
|---|---|---|
projectId |
string |
Required. ID of the project from which to remove member |
memberId |
string |
Required. ID of the member to be removed (URL params) |
DELETE /api/v1/project/projects/:projectId/members/:memberId/role| Parameter | Type | Description |
|---|---|---|
projectId |
string |
Required. ID of the project containing the member (URL param) |
memberId |
string |
Required. ID of the member whose role is to be updated |
role |
string |
Required. New role to assign to the member (Request body) |
- Create, read, update, and delete notes effortlessly.
POST /api/v1/note/create| Parameter | Type | Description |
|---|---|---|
projectId |
string |
Required. ID of the project to which the note is added (URL params) |
content |
string |
Required. The text content of the note (Body) |
GET /api/v1/note/:notesId| Parameter | Type | Description |
|---|---|---|
projectId |
string |
Required. ID of the project to fetch notes for (URL parameter) |
GET /api/v1/note/ PUT /api/v1/note/update/:notesId| Parameter | Type | Description |
|---|---|---|
noteId |
string |
Required. ID of the note to update (URL parameter) |
content |
string |
Required. New content for the note (passed in the request body) |
DELETE /api/v1/note/:notesId| Parameter | Type | Description |
|---|---|---|
noteId |
string |
Required. ID of the note to delete (URL parameter) |
- Manage tasks across three categories: To-Do, In-Progress, and Done.
POST /api/v1/task/create| Parameter | Type | Description |
|---|---|---|
projectId |
string |
Required. ID of the project to which the task will be added (URL param) |
title |
string |
Required. Title of the task |
description |
string |
Optional. Detailed description of the task |
assignedTo |
string |
Required. User ID of the person assigned to this task |
assignedBy |
string |
Required. User ID of the person who is assigning the task |
status |
string |
Optional. Current status of the task (e.g., pending, in-progress, completed) |
attachments |
array |
Optional. List of attachment URLs or file references |
GET /api/v1/task/:projectId| Parameter | Type | Description |
|---|---|---|
projectId |
string |
Required. ID of the project whose tasks you want to retrieve (URL param) |
PUT /api/v1/task/update/:taskId| Parameter | Type | Description |
|---|---|---|
taskId |
string |
Required. ID of the task to update (URL param) |
title |
string |
Optional. Updated title of the task |
description |
string |
Optional. Updated description of the task |
assignedTo |
string |
Optional. ID of the user to assign the task to |
assignedBy |
string |
Optional. ID of the user assigning the task |
status |
string |
Optional. Updated status of the task |
attachments |
array |
Optional. Updated attachments for the task |
DELETE /api/v1/task/remove/:taskId| Parameter | Type | Description |
|---|---|---|
taskId |
string |
Required. ID of the task to delete (URL parameter) |
POST /api/v1/task/create-subtask| Parameter | Type | Description |
|---|---|---|
taskId |
string |
Required. ID of the parent task (URL parameter) |
title |
string |
Required. Title of the subtask |
description |
string |
Optional. Detailed description of the subtask |
assignedTo |
string |
Optional. ID of the user to assign the subtask to |
status |
string |
Optional. Current status of the subtask (e.g., pending) |
attachments |
array |
Optional. List of file URLs or references |
PUT /api/v1/task/update/:subTaskId| Parameter | Type | Description |
|---|---|---|
subTaskId |
string |
Required. ID of the subtask to update (URL parameter) |
title |
string |
Optional. New title for the subtask |
description |
string |
Optional. Updated description of the subtask |
assignedTo |
string |
Optional. ID of the user to reassign the subtask to |
status |
string |
Optional. Updated status of the subtask |
attachments |
array |
Optional. Updated list of file URLs or references |
DELETE /api/v1/task/remove/:subTaskId| Parameter | Type | Description |
|---|---|---|
subTaskId |
string |
Required. ID of the subtask to delete (URL parameter) |
To run this project, you will need to add the following environment variables to your .env file
PORT =
MONGO_URI =
BASE_URL =
CORS_ORIGIN =
ACCESS_TOKEN_SECRET =
ACCESS_TOKEN_EXPIRY =
REFRESH_TOKEN_SECRET =
REFRESH_TOKEN_EXPIRY =
JWT_SECRET =
MAILTRAP_SMTP_HOST =
MAILTRAP_SMTP_PORT =
MAILTRAP_SMTP_USER =
MAILTRAP_SMTP_PASS =
MAILTRAP_SENDERMAIL =
NODE_ENV =
CLOUDINARY_CLOUD_NAME =
CLOUDINARY_API_KEY =
CLOUDINARY_API_SECRET =
FORGOT_PASSWORD_REDIRECT_URL =
Install my-project with npm
npm install npm install express npm i dotenv npm i express-validator npm i bcryptjs npm i crypto npm i cookie-parser npm i jsonwebtoken npm i mongoose npm i cors npm i mailgen npm i nodemailer npm i multer npm i cloudinary npm i cloudinary-build-url npm i -D nodemon npm i -D prettierTo run tests, run the following command
npm run startClone the project
git clone https://github.com/i-himanshu29/Kanban-Project.gitGo to the project directory
cd KanbanBackendInstall dependencies
npm installStart the server
npm run startKanbanBackend/
βββ src/
β βββ db/
β β βββ dbconnect.js
β β
β
β βββ controllers/
β β βββ auth.controller.js
β β βββ notes.controller.js
β β βββ task.controller.js
β β βββ project.controller.js
β β βββ healthcheck.controller.js
β βββ middlewares/
β β βββ multer.middleware.js # verifyJWT, checkAdmin
β β βββ verifyJWT.middleware.js # multer config
β β βββ validator.middleware.js
β
β βββ models/
β β βββ note.model.js
β β βββ project.model.js
β β βββ task.model.js
β β βββ projectmember.model.js
β β βββ subtask.model.js
β β βββ user.model.js
β
β βββ routes/
β β βββ auth.routes.js
β β βββ note.routes.js
β β βββ project.routes.js
β β βββ task.routes.js
β β βββ healthcheck.routes.js
β
β βββ utils/
β β βββ async-handler.util.js
β β βββ api-error.util.js
β β βββ api-response.util.js
β β βββ mail.util.js
β β βββ constant.js
β β βββ cloudinary.js
β
β βββ validators/
β β βββ auth.validator.js
β β βββ notes.validator.js
β β βββ project.validator.js
β β βββ task.validator.js
β
β βββ app.js # Express app setup (middlewares, routes)
β βββ index.js # Entry point (connect DB and start server)
β
βββ public/ # for local image storage before upload
βββ .env
βββ .gitignore
βββ package.json
βββ README.md
βββ .prettierrc
βββ .prettierignore
Hello, I'm Himanshu Maurya, a passionate Software Developer who loves building innovative and efficient software.
JavaScript , React.js , Tailwindcss , Next.js , Node.js , Express.js , MongoDB , PostgreSql , Redis , Kafka , Deployment , Docker , WebSocket , Testing , Git/GitHub , AWS , etc.
- Thanks to Hitesh Choudhary and Piyush Garg sir for the inspiration and guidance for his in-depth backend knowledge and support.