A full-stack Project & Task Management System built with Role-Based Access Control (RBAC) and Permission-Based Authorization.
The system allows organizations to manage projects, tasks, roles, and permissions in a secure, scalable, and flexible manner.
- JWT-based authentication
- Secure login & protected routes
- Permission-based access control (RBAC)
- User-level permission grant & revoke
- Admin override for all permissions
- Dynamic role creation by Admin
- Permissions assigned at:
- Role level
- User level (extra / revoked permissions)
- No hard-coded role logic in routes
- Centralized permission validation middleware
- Create and manage projects
- Assign managers to projects
- Track project status
- Create, read, update, delete tasks
- Assign / reassign tasks (permission-based)
- Task priority management
- Task dependency handling:
- External dependency
- Internal task dependency
- Approval dependency
- Task statuses:
todoin-progressreviewdoneblocked
- Approval-based task flow
- Role-aware status transitions
- Block task with reason
- Dependency type selection
- Unblock task with state reset
- Validation for blocked task transitions
- Permission-based comments
- Comment history with:
- User name
- Role name
- Timestamp
- Role-specific dashboards
- Task statistics
- Project overview
- Secure API access
- React.js
- React Router
- Axios
- Tailwind CSS
- Node.js
- Express.js
- JWT Authentication
- RBAC with Permission Middleware
- MongoDB
- Mongoose ODM
Client (React) | | Axios (JWT) v API Gateway (Express) | |-- Auth Middleware |-- Permission Middleware v Controllers (Business Logic) | v MongoDB (Mongoose Models)
- Token is verified
- User role is loaded
- Role permissions fetched
- Extra permissions merged
- Revoked permissions removed
- Final permission check applied
task:createtask:readtask:updatetask:blocktask:assigntask:commenttask:approve
backend/ ├── controllers/ ├── models/ ├── routes/ ├── middleware/ ├── config/ └── server.js
frontend/ ├── src/ │ ├── pages/ │ ├── components/ │ ├── api/ │ └── App.jsx
- Verifies JWT token
- Attaches clean user object to
req.user - Loads role & permission references
- Validates required permission
- Supports:
- Role permissions
- User-level grants
- User-level revokes
- Admin bypass enabled
POST /api/auth/loginPOST /api/auth/register
POST /api/tasksGET /api/tasksGET /api/tasks/:idPUT /api/tasks/:id/statusPATCH /api/tasks/:id/blockPATCH /api/tasks/:id/unblockPUT /api/tasks/:id/assignPOST /api/tasks/:id/commentsPUT /api/tasks/:id/approve
- Permission-based UI rendering
- Role-aware dropdown filtering
- Defensive UI (crash-safe)
- Modular components
- Clean UX with Tailwind CSS
Create a .env file in backend:
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_secret_key
▶️ How to Run Locally
Backend
cd backend
npm install
npm run dev
Frontend
cd frontend
npm install
npm run dev
Website Link
https://ptms-frontend-tbg5.onrender.com/