{"id":28548022,"url":"https://github.com/the-wee-lad/multi-role-project-management-system","last_synced_at":"2025-07-27T22:33:57.139Z","repository":{"id":292734038,"uuid":"981175018","full_name":"The-Wee-Lad/Multi-Role-Project-Management-System","owner":"The-Wee-Lad","description":"A secure and scalable REST API for managing users, projects, and tasks with multi-tenancy and role-based access control (Admin, Manager, Member). Built with Node.js, Express, MongoDB, and JWT authentication.","archived":false,"fork":false,"pushed_at":"2025-05-11T21:40:36.000Z","size":95,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-01T18:52:17.634Z","etag":null,"topics":["internship-project","internship-task","project-management"],"latest_commit_sha":null,"homepage":"https://multi-role-project-management-system.onrender.com/healthCheck","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/The-Wee-Lad.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-10T14:07:36.000Z","updated_at":"2025-05-11T21:40:39.000Z","dependencies_parsed_at":"2025-05-11T21:40:41.174Z","dependency_job_id":null,"html_url":"https://github.com/The-Wee-Lad/Multi-Role-Project-Management-System","commit_stats":null,"previous_names":["the-wee-lad/multi-role-project-management-system"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/The-Wee-Lad/Multi-Role-Project-Management-System","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Wee-Lad%2FMulti-Role-Project-Management-System","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Wee-Lad%2FMulti-Role-Project-Management-System/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Wee-Lad%2FMulti-Role-Project-Management-System/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Wee-Lad%2FMulti-Role-Project-Management-System/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Wee-Lad","download_url":"https://codeload.github.com/The-Wee-Lad/Multi-Role-Project-Management-System/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Wee-Lad%2FMulti-Role-Project-Management-System/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267436607,"owners_count":24086898,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["internship-project","internship-task","project-management"],"created_at":"2025-06-10T01:08:40.818Z","updated_at":"2025-07-27T22:33:57.110Z","avatar_url":"https://github.com/The-Wee-Lad.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multi-Role Project Management System\n\nA robust, secure, and scalable REST API for managing projects, tasks, and users within companies using strict role-based access control and multi-tenancy.\n\nDeployed at render https://multi-role-project-management-system.onrender.com/healthCheck\n\n## 🚀 Features\n\n- 🔒 JWT-based Authentication (with Refresh Token support)\n- 🛂 Role-based Authorization (Admin, Manager, Member)\n- 🏢 Multi-Tenancy (Data isolation per company)\n- 📁 CRUD for Users, Projects, and Tasks\n- 🔍 Task Filtering \u0026 Pagination\n- 🚧 Centralized Error Handling\n- 🛡️ Rate Limiting per IP\n- 📋 Modular code structure\n\n---\n\n## 🛠️ Tech Stack\n\n- Node.js + Express.js\n- MongoDB + Mongoose\n- JWT (access + refresh)\n- Joi for validation\n- express-rate-limit\n\n---\n\n## 📚 API Endpoints Overview\n\n### 🏢 Company Routes (`/users/company`)\n\n| Method | Endpoint         | Description        |\n| ------ | ---------------- | ------------------ |\n| POST   | `/users/company` | Register a company |\n\n---\n\n### 👤 Auth \u0026 User Routes (`/users`)\n\n| Method | Endpoint                      | Description                   |\n| ------ | ----------------------------- | ----------------------------- |\n| POST   | `/users/login`                | Login and receive tokens      |\n| POST   | `/users/refresh-access-token` | Refresh access token          |\n| POST   | `/users/logout`               | Logout user                   |\n| POST   | `/users/`                     | Create new user (Admin only)  |\n| PATCH  | `/users/`                     | Update current user           |\n| GET    | `/users/`                     | Get current user info         |\n| DELETE | `/users/`                     | Delete current user           |\n| GET    | `/users/list`                 | List users in company (Admin) |\n| POST   | `/users/updateTask/:taskId`   | Update task assigned to user  |\n| GET    | `/users/get-user-tasks`       | Get user’s assigned tasks     |\n\n---\n\n### 📁 Project Routes (`/projects/:id`)\n\n| Method | Endpoint        | Description          |\n| ------ | --------------- | -------------------- |\n| POST   | `/projects/:id` | Create a new project |\n| GET    | `/projects/:id` | Get all projects     |\n| PATCH  | `/projects/:id` | Update a project     |\n| DELETE | `/projects/:id` | Delete a project     |\n\n---\n\n### ✅ Task Routes (`/tasks`)\n\n| Method | Endpoint                  | Description              |\n| ------ | ------------------------- | ------------------------ |\n| POST   | `/tasks/create`           | Create a new task        |\n| PATCH  | `/tasks/:taskId`          | Update an existing task  |\n| DELETE | `/tasks/:taskId`          | Delete a task            |\n| POST   | `/tasks/assign/:taskId`   | Assign user to task      |\n| POST   | `/tasks/unassign/:taskId` | Unassign user from task  |\n| POST   | `/tasks/getAllTasks`      | Get tasks (with filters) |\n\n---\n\n## 🔐 Roles \u0026 Permissions\n\n| Role    | Users       | Projects    | Tasks             |\n| ------- | ----------- | ----------- | ----------------- |\n| Admin   | Full access | Full access | Full access       |\n| Manager | View only   | Full access | Full access       |\n| Member  | No access   | No access   | View \u0026 update own |\n\n---\n\n## 🔍 Task Filters\n\nPass filters in body of `POST /tasks/getAllTasks`:\n\n```json\n{\n  \"status\": \"In Progress\",\n  \"assignedTo\": \"user_id\"\n}\n```\n\n---\n\n## 📂 Project Structure\n\n```\nsrc/\n├── controllers/\n├── routes/\n├── models/\n├── services/\n├── middlewares/\n├── validators/\n├── utils/\n└── app.js\n```\n\n---\n\n## 📦 Setup Instructions\n\n1. **Clone the repo:**\n\n   ```bash\n   git clone https://github.com/The-Wee-Lad/Multi-Role-Project-Management-System\n   cd multi-role-project-mgmt\n   ```\n\n2. **Install dependencies:**\n\n   ```bash\n   npm install\n   ```\n\n3. **Create `.env` from `.env.example` and configure**\n\n4. **Run the server:**\n\n   ```bash\n   npm run dev\n   ```\n\n---\n\n## 📬 Postman Collection\n\n[Postman link for 15+ endpoints \u003cimg src=\"https://run.pstmn.io/button.svg\" alt=\"Run In Postman\" style=\"width: 128px; height: 32px;\"\u003e](https://www.postman.com/payload-participant-73420966/workspace/the-wee-lad-public-workspace/collection/40788084-a02e4e27-3d7f-4645-8a55-59b06a1acdeb?action=share\u0026creator=40788084\u0026active-environment=40788084-e4e66640-3fbc-43f6-a930-3b861f6afc56)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-wee-lad%2Fmulti-role-project-management-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthe-wee-lad%2Fmulti-role-project-management-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-wee-lad%2Fmulti-role-project-management-system/lists"}