Skip to content

i-himanshu29/Kanban-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Kanban Project - Trello

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.

Badges

MongoDB Node.js Express.js JWT Auth Nodemailer Mailgen Env Variables

Tech Stack

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.

Frontend

  • 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.

Features

Project Management

  • Create, update, and delete projects.

  • Add and manage team members for each project.

  • Collaborate seamlessly with your team.

Notes Management

  • Store important notes for quick access.

  • CRUD functionality to add , edit and delete notes.

Task Management

  • Organize tasks into three categories:

  • To-Do: Plan and list upcoming tasks.

  • In-Progress: Track ongoing tasks.

  • Done: Celebrate completed tasks

API Reference

Authentication

  • User registration and login with secure credentials.

HealthCheck Route

  GET /api/v1/healthcheck/

Register User

  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

Verify User

  GET /api/v1/users/verify/:token
Parameter Type Description
token string Required. The email verification token

login User

  POST /api/v1/users/login
Parameter Type Description
email string Required. The name of the email
password string Required. The name of the password

Resend Mail

  GET /api/v1/users/resend-mail
Parameter Type Description
email string Required. User's email address

Refresh Token

  POST /api/v1/users/refresh-token
Parameter Type Description
refreshToken string Required. The refresh token issued during login

Forgot password

  POST /api/v1/users/forgot-password
Parameter Type Description
email string Required. User's email address

Change password

  POST /api/v1/users/change-password
Parameter Type Description
oldPassword string Required. Old Password is required
newPassword string Required. New Password is required

Profile

  GET /api/v1/users/profile

Logout

  POST /api/v1/users/logout

Project Management

  • Create, update, and delete projects.

  • Manage team members by adding and removing them.

get projects

  GET /api/v1/project/projects/
Parameter Type Description
userId string Required. Automatically extracted from authentication token (req.user).

get project by id

  GET /api/v1/project/projects/:projectId
Parameter Type Description
projectId string Required. The ID of the project to fetch

create project

  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

update 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 project

  DELETE /api/v1/project/delete/:projectId
Parameter Type Description
projectId string Required. ID of the project to delete (URL params)

add member to project

  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)

project member

  GET /api/v1/project/projects/:projectId/members
Parameter Type Description
projectId string Required. ID of the project to fetch members from (URL params)

remove member from project

  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)

update member from project

  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)

Notes Management

  • Create, read, update, and delete notes effortlessly.

create Notes

  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 Notes by Id

  GET /api/v1/note/:notesId
Parameter Type Description
projectId string Required. ID of the project to fetch notes for (URL parameter)

get Notes

  GET /api/v1/note/

update Notes

  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 Notes

  DELETE /api/v1/note/:notesId
Parameter Type Description
noteId string Required. ID of the note to delete (URL parameter)

Task Management

  • Manage tasks across three categories: To-Do, In-Progress, and Done.

create task

  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 task

  GET /api/v1/task/:projectId
Parameter Type Description
projectId string Required. ID of the project whose tasks you want to retrieve (URL param)

update task

  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 task

  DELETE /api/v1/task/remove/:taskId
Parameter Type Description
taskId string Required. ID of the task to delete (URL parameter)

create subtask

  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

update subtask

  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 subtask

  DELETE /api/v1/task/remove/:subTaskId
Parameter Type Description
subTaskId string Required. ID of the subtask to delete (URL parameter)

Environment Variables

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 =

Installation

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 prettier

Running Tests

To run tests, run the following command

  npm run start

Run Locally

Clone the project

  git clone https://github.com/i-himanshu29/Kanban-Project.git

Go to the project directory

  cd KanbanBackend

Install dependencies

  npm install

Start the server

  npm run start

πŸ“ Project Structure - Kanban Project Backend

KanbanBackend/
β”œβ”€β”€ 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

Hi, I'm Himanshu Maurya! πŸ‘‹

πŸš€ About Me

Hello, I'm Himanshu Maurya, a passionate Software Developer who loves building innovative and efficient software.

πŸ›  Skills

JavaScript , React.js , Tailwindcss , Next.js , Node.js , Express.js , MongoDB , PostgreSql , Redis , Kafka , Deployment , Docker , WebSocket , Testing , Git/GitHub , AWS , etc.

πŸ”— Links

portfolio

linkedin

twitter

Acknowledgements

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors