A RESTful API service for collaborative project management. Supports project organization, hierarchical tasks, notes, user authentication, and role-based access control.
- Overview
- Features
- API Endpoints
- Permission Matrix
- Data Models
- Security
- File Management
- Getting Started
- Success Criteria
Project MGM Backend enables teams to:
- Organize projects
- Manage tasks and subtasks
- Maintain project notes
- Authenticate users with role-based access
- User Authentication & Authorization: Registration, login, JWT, password management, email verification, role-based access (Admin, Project Admin, Member)
- Project Management: Create, list, update, delete projects
- Team Member Management: Invite, list, update roles, remove members
- Task Management: Create, list, update, delete tasks; assign tasks; attach files; status tracking (Todo, In Progress, Done)
- Subtask Management: Add, update, delete subtasks; mark completion
- Project Notes: Add, list, update, delete notes
- System Health: Health check endpoint
POST /register- Register userPOST /login- LoginPOST /logout- LogoutGET /current-user- Current user infoPOST /change-password- Change passwordPOST /refresh-token- Refresh tokenGET /verify-email/:verificationToken- Verify emailPOST /forgot-password- Forgot passwordPOST /reset-password/:resetToken- Reset passwordPOST /resend-email-verification- Resend verification email
GET /- List projectsPOST /- Create projectGET /:projectId- Project detailsPUT /:projectId- Update projectDELETE /:projectId- Delete projectGET /:projectId/members- List membersPOST /:projectId/members- Add memberPUT /:projectId/members/:userId- Update member roleDELETE /:projectId/members/:userId- Remove member
GET /:projectId- List tasksPOST /:projectId- Create taskGET /:projectId/t/:taskId- Task detailsPUT /:projectId/t/:taskId- Update taskDELETE /:projectId/t/:taskId- Delete taskPOST /:projectId/t/:taskId/subtasks- Create subtaskPUT /:projectId/st/:subTaskId- Update subtaskDELETE /:projectId/st/:subTaskId- Delete subtask
GET /:projectId- List notesPOST /:projectId- Create noteGET /:projectId/n/:noteId- Note detailsPUT /:projectId/n/:noteId- Update noteDELETE /:projectId/n/:noteId- Delete note
GET /- System health status
| Feature | Admin | Project Admin | Member |
|---|---|---|---|
| Create Project | ✓ | ✗ | ✗ |
| Update/Delete Project | ✓ | ✗ | ✗ |
| Manage Project Members | ✓ | ✗ | ✗ |
| Create/Update/Delete Tasks | ✓ | ✓ | ✗ |
| View Tasks | ✓ | ✓ | ✓ |
| Update Subtask Status | ✓ | ✓ | ✓ |
| Create/Delete Subtasks | ✓ | ✓ | ✗ |
| Create/Update/Delete Notes | ✓ | ✗ | ✗ |
| View Notes | ✓ | ✓ | ✓ |
- User Roles:
admin,project_admin,member - Task Status:
todo,in_progress,done
- JWT authentication & refresh tokens
- Role-based authorization middleware
- Input validation
- Email verification
- Secure password reset
- File upload security (Multer)
- CORS configuration
- Multiple file attachments on tasks
- Files stored in
public/images - File metadata: URL, MIME type, size
- Secure upload handling
- Clone the repo
- Install dependencies:
npm install - Configure environment variables
- Start server:
npm start
- Secure authentication & authorization
- Complete project lifecycle management
- Hierarchical tasks & subtasks
- Role-based access control
- File attachment support
- Email notifications
- Comprehensive API documentation