# gaurav0330/project-management-tool architecture

> Architecture diagram of the GitHub repository gaurav0330/project-management-tool, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gaurav0330/project-management-tool
- Repository: https://github.com/gaurav0330/project-management-tool

## Overview

YojanaDesk is a role-based project-management platform: managers create projects and assign leads, leads organize teams and delegate work, and members submit task progress for review. The React application calls a GraphQL backend backed by MongoDB; it also supports AI-assisted assignment, GitHub task updates, analytics, chat, and video calls. The graph follows relationships visible in excerpts or explicitly described in the README; several feature-specific resolver and UI links are documented capabilities rather than inspected call paths.

Main entry points: [`backend/graphql/resolvers/index.js`](https://github.com/gaurav0330/project-management-tool/blob/master/backend/graphql/resolvers/index.js) (GraphQL API), [`backend/graphql/resolvers/projectManager.js`](https://github.com/gaurav0330/project-management-tool/blob/master/backend/graphql/resolvers/projectManager.js) (Project operations), [`frontend/src/App.jsx`](https://github.com/gaurav0330/project-management-tool/blob/master/frontend/src/App.jsx) (Role-based app), [`backend/graphql/resolvers/taskSuggestion.js`](https://github.com/gaurav0330/project-management-tool/blob/master/backend/graphql/resolvers/taskSuggestion.js) (Assignment suggestions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["Role-based app<br/>[App.jsx]"]
  node_project_ui["Project workflows"]
  node_lead_ui["Lead workflows"]
  node_member_ui["Member workflows"]
  node_chat_ui["Chat and calls"]
  node_analytics_ui["Analytics dashboards"]
end

subgraph group_api["API and workflows"]
  node_graphql["GraphQL API<br/>[index.js]"]
  node_project_resolver["Project operations<br/>[projectManager.js]"]
  node_suggestion_resolver["Assignment suggestions<br/>[taskSuggestion.js]"]
  node_services["Project and task services"]
  node_auth["Authentication<br/>[authService.js]"]
  node_server["HTTP and GraphQL server<br/>[server.js]"]
end

subgraph group_realtime["Realtime collaboration"]
  node_chat_service["Message service<br/>[messageService.js]"]
  node_socket["Chat sockets<br/>[socket.js]"]
  node_video_signal["Video signaling<br/>[videoSignal.js]"]
  node_meeting_store[("Meeting records<br/>[Meeting.js]")]
end

subgraph group_data["Domain data"]
  node_project_store[("Projects<br/>[Project.js]")]
  node_task_store[("Tasks<br/>[Task.js]")]
  node_team_store[("Teams<br/>[Teams.js]")]
  node_user_store[("Users<br/>[User.js]")]
  node_profile_store[("Profiles<br/>[Profile.js]")]
end

subgraph group_integrations["External integrations"]
  node_github["GitHub"]
  node_email["Email service<br/>[emailService.js]"]
end

node_manager(("Project manager"))
node_lead(("Team lead"))
node_member(("Team member"))

node_manager -->|"uses"| node_app
node_lead -->|"uses"| node_app
node_member -->|"uses"| node_app
node_app -->|"routes to"| node_project_ui
node_app -->|"routes to"| node_lead_ui
node_app -->|"routes to"| node_member_ui
node_app -->|"routes to"| node_chat_ui
node_project_ui -.->|"requests"| node_graphql
node_lead_ui -.->|"requests"| node_graphql
node_member_ui -.->|"requests"| node_graphql
node_chat_ui -.->|"requests"| node_graphql
node_analytics_ui -.->|"requests"| node_graphql
node_server -->|"mounts"| node_graphql
node_server -->|"authenticates"| node_auth
node_graphql -->|"dispatches"| node_project_resolver
node_project_resolver -->|"calls"| node_services
node_project_resolver -->|"queries"| node_project_store
node_project_resolver -->|"queries"| node_task_store
node_project_resolver -->|"queries"| node_user_store
node_project_resolver -->|"queries"| node_team_store
node_project_resolver -->|"creates groups via"| node_services
node_graphql -->|"dispatches"| node_suggestion_resolver
node_suggestion_resolver -->|"requests suggestions"| node_services
node_suggestion_resolver -->|"reads"| node_project_store
node_suggestion_resolver -->|"reads"| node_team_store
node_suggestion_resolver -->|"reads"| node_user_store
node_suggestion_resolver -->|"reads"| node_profile_store
node_auth -->|"reads and writes"| node_user_store
node_auth -->|"sends login notice"| node_email
node_server -->|"registers"| node_socket
node_server -->|"registers"| node_video_signal
node_socket -->|"uses"| node_chat_service
node_video_signal -->|"uses"| node_meeting_store
node_server -->|"updates from webhook"| node_task_store
node_github -->|"sends webhook events"| node_server
node_services -->|"notifies"| node_email

click node_app "https://github.com/gaurav0330/project-management-tool/blob/master/frontend/src/App.jsx"
click node_project_ui "https://github.com/gaurav0330/project-management-tool/tree/master/frontend/src/pages/ProjectManager"
click node_lead_ui "https://github.com/gaurav0330/project-management-tool/tree/master/frontend/src/pages/TeamLead"
click node_member_ui "https://github.com/gaurav0330/project-management-tool/tree/master/frontend/src/pages/TeamMember"
click node_chat_ui "https://github.com/gaurav0330/project-management-tool/tree/master/frontend/src/pages/Chat"
click node_graphql "https://github.com/gaurav0330/project-management-tool/blob/master/backend/graphql/resolvers/index.js"
click node_project_resolver "https://github.com/gaurav0330/project-management-tool/blob/master/backend/graphql/resolvers/projectManager.js"
click node_suggestion_resolver "https://github.com/gaurav0330/project-management-tool/blob/master/backend/graphql/resolvers/taskSuggestion.js"
click node_services "https://github.com/gaurav0330/project-management-tool/tree/master/backend/services"
click node_auth "https://github.com/gaurav0330/project-management-tool/blob/master/backend/services/authService.js"
click node_server "https://github.com/gaurav0330/project-management-tool/blob/master/backend/server.js"
click node_chat_service "https://github.com/gaurav0330/project-management-tool/blob/master/backend/services/messageService.js"
click node_socket "https://github.com/gaurav0330/project-management-tool/blob/master/backend/socket.js"
click node_video_signal "https://github.com/gaurav0330/project-management-tool/blob/master/backend/socket/videoSignal.js"
click node_meeting_store "https://github.com/gaurav0330/project-management-tool/blob/master/backend/models/Meeting.js"
click node_project_store "https://github.com/gaurav0330/project-management-tool/blob/master/backend/models/Project.js"
click node_task_store "https://github.com/gaurav0330/project-management-tool/blob/master/backend/models/Task.js"
click node_team_store "https://github.com/gaurav0330/project-management-tool/blob/master/backend/models/Teams.js"
click node_user_store "https://github.com/gaurav0330/project-management-tool/blob/master/backend/models/User.js"
click node_profile_store "https://github.com/gaurav0330/project-management-tool/blob/master/backend/models/Profile.js"
click node_email "https://github.com/gaurav0330/project-management-tool/blob/master/backend/services/emailService.js"
click node_analytics_ui "https://github.com/gaurav0330/project-management-tool/blob/master/frontend/src/pages/ProjectManager/AnalyticsDashboard.jsx"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_project_ui,node_lead_ui,node_member_ui,node_chat_ui,node_analytics_ui toneBlue
class node_graphql,node_project_resolver,node_suggestion_resolver,node_services,node_auth,node_server toneAmber
class node_chat_service,node_socket,node_video_signal,node_meeting_store toneMint
class node_project_store,node_task_store,node_team_store,node_user_store,node_profile_store toneRose
class node_github,node_email,node_manager,node_lead,node_member toneIndigo
```

## Components

### Web application

- [Role-based app](https://github.com/gaurav0330/project-management-tool/blob/master/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Project workflows](https://github.com/gaurav0330/project-management-tool/tree/master/frontend/src/pages/ProjectManager): `frontend/src/pages/ProjectManager`
- [Lead workflows](https://github.com/gaurav0330/project-management-tool/tree/master/frontend/src/pages/TeamLead): `frontend/src/pages/TeamLead`
- [Member workflows](https://github.com/gaurav0330/project-management-tool/tree/master/frontend/src/pages/TeamMember): `frontend/src/pages/TeamMember`
- [Chat and calls](https://github.com/gaurav0330/project-management-tool/tree/master/frontend/src/pages/Chat): `frontend/src/pages/Chat`
- [Analytics dashboards](https://github.com/gaurav0330/project-management-tool/blob/master/frontend/src/pages/ProjectManager/AnalyticsDashboard.jsx): `frontend/src/pages/ProjectManager/AnalyticsDashboard.jsx`

### API and workflows

- [GraphQL API](https://github.com/gaurav0330/project-management-tool/blob/master/backend/graphql/resolvers/index.js): `backend/graphql/resolvers/index.js`
- [Project operations](https://github.com/gaurav0330/project-management-tool/blob/master/backend/graphql/resolvers/projectManager.js): `backend/graphql/resolvers/projectManager.js`
- [Assignment suggestions](https://github.com/gaurav0330/project-management-tool/blob/master/backend/graphql/resolvers/taskSuggestion.js): `backend/graphql/resolvers/taskSuggestion.js`
- [Project and task services](https://github.com/gaurav0330/project-management-tool/tree/master/backend/services): `backend/services`
- [Authentication](https://github.com/gaurav0330/project-management-tool/blob/master/backend/services/authService.js): `backend/services/authService.js`
- [HTTP and GraphQL server](https://github.com/gaurav0330/project-management-tool/blob/master/backend/server.js): `backend/server.js`

### Realtime collaboration

- [Message service](https://github.com/gaurav0330/project-management-tool/blob/master/backend/services/messageService.js): `backend/services/messageService.js`
- [Chat sockets](https://github.com/gaurav0330/project-management-tool/blob/master/backend/socket.js): `backend/socket.js`
- [Video signaling](https://github.com/gaurav0330/project-management-tool/blob/master/backend/socket/videoSignal.js): `backend/socket/videoSignal.js`
- [Meeting records](https://github.com/gaurav0330/project-management-tool/blob/master/backend/models/Meeting.js): `backend/models/Meeting.js`

### Domain data

- [Projects](https://github.com/gaurav0330/project-management-tool/blob/master/backend/models/Project.js): `backend/models/Project.js`
- [Tasks](https://github.com/gaurav0330/project-management-tool/blob/master/backend/models/Task.js): `backend/models/Task.js`
- [Teams](https://github.com/gaurav0330/project-management-tool/blob/master/backend/models/Teams.js): `backend/models/Teams.js`
- [Users](https://github.com/gaurav0330/project-management-tool/blob/master/backend/models/User.js): `backend/models/User.js`
- [Profiles](https://github.com/gaurav0330/project-management-tool/blob/master/backend/models/Profile.js): `backend/models/Profile.js`

### External integrations

- **GitHub**
- [Email service](https://github.com/gaurav0330/project-management-tool/blob/master/backend/services/emailService.js): `backend/services/emailService.js`

### Other components

- **Project manager**
- **Team lead**
- **Team member**

## Connections

- Project manager → Role-based app: uses (evidence: `README.md`)
- Team lead → Role-based app: uses (evidence: `README.md`)
- Team member → Role-based app: uses (evidence: `README.md`)
- Role-based app → Project workflows: routes to (evidence: `frontend/src/App.jsx`)
- Role-based app → Lead workflows: routes to (evidence: `frontend/src/App.jsx`)
- Role-based app → Member workflows: routes to (evidence: `frontend/src/App.jsx`)
- Role-based app → Chat and calls: routes to (evidence: `frontend/src/App.jsx`)
- Project workflows → GraphQL API: requests
- Lead workflows → GraphQL API: requests
- Member workflows → GraphQL API: requests
- Chat and calls → GraphQL API: requests
- Analytics dashboards → GraphQL API: requests
- HTTP and GraphQL server → GraphQL API: mounts (evidence: `backend/server.js`)
- HTTP and GraphQL server → Authentication: authenticates (evidence: `backend/server.js`)
- GraphQL API → Project operations: dispatches (evidence: `backend/graphql/resolvers/index.js`)
- Project operations → Project and task services: calls (evidence: `backend/graphql/resolvers/projectManager.js`)
- Project operations → Projects: queries (evidence: `backend/graphql/resolvers/projectManager.js`)
- Project operations → Tasks: queries (evidence: `backend/graphql/resolvers/projectManager.js`)
- Project operations → Users: queries (evidence: `backend/graphql/resolvers/projectManager.js`)
- Project operations → Teams: queries (evidence: `backend/graphql/resolvers/projectManager.js`)
- Project operations → Project and task services: creates groups via (evidence: `backend/graphql/resolvers/projectManager.js`)
- GraphQL API → Assignment suggestions: dispatches (evidence: `backend/graphql/resolvers/index.js`)
- Assignment suggestions → Project and task services: requests suggestions (evidence: `backend/graphql/resolvers/taskSuggestion.js`)
- Assignment suggestions → Projects: reads (evidence: `backend/graphql/resolvers/taskSuggestion.js`)
- Assignment suggestions → Teams: reads (evidence: `backend/graphql/resolvers/taskSuggestion.js`)
- Assignment suggestions → Users: reads (evidence: `backend/graphql/resolvers/taskSuggestion.js`)
- Assignment suggestions → Profiles: reads (evidence: `backend/graphql/resolvers/taskSuggestion.js`)
- Authentication → Users: reads and writes (evidence: `backend/services/authService.js`)
- Authentication → Email service: sends login notice (evidence: `backend/services/authService.js`)
- HTTP and GraphQL server → Chat sockets: registers (evidence: `backend/server.js`)
- HTTP and GraphQL server → Video signaling: registers (evidence: `backend/server.js`)
- Chat sockets → Message service: uses (evidence: `backend/socket.js`)
- Video signaling → Meeting records: uses (evidence: `backend/socket/videoSignal.js`)
- HTTP and GraphQL server → Tasks: updates from webhook (evidence: `backend/server.js`)
- GitHub → HTTP and GraphQL server: sends webhook events (evidence: `backend/server.js`)
- Project and task services → Email service: notifies (evidence: `backend/services/projectService.js`)
