Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Task Management Backend (Jira-Style)

A production-ready backend system inspired by Jira, built to demonstrate real-world backend engineering concepts such as authentication, authorization, pagination, validation, and soft deletion.


Features

Authentication & Authorization

  • JWT-based user authentication (Register / Login)
  • Role-based and resource-based authorization
  • Secure password hashing using bcrypt

Project Management

  • Create, view, and delete projects
  • Project ownership & member access control
  • Soft delete for safe project removal

Task Management

  • Create tasks within projects
  • Assign tasks to users
  • Update task status (todo → in-progress → done)
  • Delete tasks using soft delete
  • Filter tasks by status & priority

Backend Engineering Concepts

  • RESTful API design
  • Pagination & filtering
  • Input validation (express-validator)
  • Centralized error handling
  • Clean, modular ES-module architecture

Tech Stack

  • Backend: Node.js, Express.js (ES Modules)
  • Database: MongoDB (Mongoose)
  • Authentication: JWT, bcrypt
  • Validation: express-validator
  • Tools: Postman, Nodemon
  • Architecture: MVC-style modular structure

System Architecture

Client (Postman / Frontend)
|
v
Express API (Auth, Projects, Tasks)
|
v
MongoDB
  • Stateless backend using JWT
  • Authorization handled via middleware
  • Soft deletes to prevent accidental data loss

Project Structure

src/
├── controllers/  
├── models/  
├── routes/  
├── middleware/   
├── validators/  
├── config/    
└── app.js  

API Endpoints

Authentication

POST /api/auth/register
POST /api/auth/login

Projects

POST /api/projects
GET /api/projects?page=1&limit=5
DELETE /api/projects/:projectId (soft delete)

Tasks

POST /api/projects/:projectId/tasks
GET /api/projects/:projectId/tasks?page=1&limit=5
PATCH /api/tasks/:taskId/status
DELETE /api/tasks/:taskId (soft delete)

API Testing

  • All APIs tested end-to-end using Postman
  • Verified authentication, authorization, pagination, filters, and soft delete behavior

Soft Delete Strategy

Instead of permanently deleting records:

  • isDeleted: true flag is used
  • Deleted records are excluded from queries
  • Prevents accidental data loss
  • Supports recovery and auditing

Why soft delete?
To preserve data integrity and meet real-world business requirements.


Future Improvements

  • Centralized logging

  • Rate limiting on authentication endpoints

  • Admin-level access control

  • Unit and integration tests

Key Learnings

  • Designing secure and scalable REST APIs

  • Implementing authorization beyond basic authentication

  • Handling real-world backend concerns like pagination and soft delete

  • Structuring a maintainable backend codebase

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages