# rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects architecture

> Architecture diagram of the GitHub repository rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects
- Repository: https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects

## Overview

ProjectMate helps developers discover projects, form teams, and collaborate through chat, video, AI guidance, and GitHub progress tracking. The main journey runs from profile and project discovery through join requests and team finalization, then into a collaboration workspace and project publication. The graph combines sampled service/controller behavior with major README capabilities; chat, Agora, and some frontend page wiring are represented at the documented subsystem level because their implementation was not sampled.

Main entry points: [`frontend/src/lib/axios.js`](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/lib/axios.js) (HTTP Client), [`backend/src/main/java/com/projectmate/service/ProjectService.java`](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/service/ProjectService.java) (Project Lifecycle), [`backend/src/main/java/com/projectmate/repository/UserRepository.java`](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/repository/UserRepository.java) (User Records), [`frontend/src/pages/ProjectDetails.jsx`](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/pages/ProjectDetails.jsx) (Project Workspace UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web Client"]
  node_app["React App &amp; Routes<br/>[App.jsx]"]
  node_authctx["Auth Context<br/>[AuthContext.jsx]"]
  node_explore["Discovery &amp; Profiles<br/>[Explore.jsx]"]
  node_projectui["Project Workspace UI<br/>[ProjectDetails.jsx]"]
  node_api["HTTP Client<br/>[axios.js]"]
end

subgraph group_project["Project Matching"]
  node_projectctl["Project API"]
  node_projectsvc["Project Lifecycle"]
  node_requestsctl["Team Request API"]
  node_requestsvc["Team Formation"]
  node_projectdb[("Project Records")]
  node_requestdb[("Team Requests")]
  node_mysql[("MySQL")]
end

subgraph group_collab["Team Collaboration"]
  node_chat["Real-Time Chat"]
  node_ws["WebSocket Broker"]
  node_video["Video &amp; Screen Sharing<br/>[VideoRoom.jsx]"]
  node_agoractl["Agora Token API"]
end

subgraph group_identity["Identity &amp; Admin"]
  node_authctl["Authentication API"]
  node_authsvc["Authentication Service<br/>[AuthService.java]"]
  node_email["Reset Email<br/>[EmailService.java]"]
  node_users["User &amp; Profile API"]
  node_admin["Admin API"]
  node_userdb[("User Records")]
end

subgraph group_integrations["External Services"]
  node_gemini["AI Mentor<br/>[GeminiService.java]"]
  node_github["Commit Sync<br/>[GithubService.java]"]
  node_geminisvc{{"Google Gemini"}}
  node_githubapi{{"GitHub API"}}
  node_agora{{"Agora RTC"}}
end

node_developer(("Developer"))

node_developer -->|"uses"| node_app
node_app -->|"provides auth"| node_authctx
node_app -->|"routes to"| node_explore
node_app -->|"routes to"| node_projectui
node_explore -->|"requests data"| node_api
node_projectui -->|"requests actions"| node_api
node_authctx -->|"requests auth"| node_api
node_api -->|"REST requests"| node_authctl
node_api -->|"REST requests"| node_users
node_api -->|"REST requests"| node_projectctl
node_api -->|"REST requests"| node_requestsctl
node_authctl -->|"delegates"| node_authsvc
node_authsvc -->|"reads/writes"| node_userdb
node_authsvc -->|"sends reset email"| node_email
node_users -->|"reads"| node_userdb
node_users -->|"reads"| node_projectdb
node_users -->|"reads"| node_requestdb
node_projectctl -->|"delegates"| node_projectsvc
node_projectctl -->|"enhances description"| node_gemini
node_projectsvc -->|"reads/writes"| node_projectdb
node_projectsvc -->|"reads"| node_userdb
node_projectsvc -->|"reads"| node_requestdb
node_projectsvc -->|"generates/analyzes"| node_gemini
node_projectsvc -->|"syncs commits"| node_github
node_requestsctl -->|"delegates"| node_requestsvc
node_requestsvc -->|"reads"| node_userdb
node_requestsvc -->|"reads"| node_projectdb
node_requestsvc -->|"reads/writes"| node_requestdb
node_admin -->|"manages users"| node_userdb
node_admin -->|"manages projects"| node_projectdb
node_chat -->|"publishes messages"| node_ws
node_ws -->|"broadcasts chat"| node_developer
node_projectui -->|"opens team chat"| node_chat
node_projectui -->|"opens video room"| node_video
node_video -.->|"joins RTC"| node_agora
node_projectui -.->|"requests token"| node_agoractl
node_agoractl -.->|"issues credentials"| node_agora
node_gemini -->|"calls API"| node_geminisvc
node_github -->|"fetches commits"| node_githubapi
node_projectdb -->|"persists"| node_mysql
node_requestdb -->|"persists"| node_mysql
node_userdb -->|"persists"| node_mysql

click node_app "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/App.jsx"
click node_authctx "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/context/AuthContext.jsx"
click node_explore "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/pages/Explore.jsx"
click node_projectui "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/pages/ProjectDetails.jsx"
click node_api "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/lib/axios.js"
click node_authctl "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/AuthController.java"
click node_authsvc "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/service/AuthService.java"
click node_email "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/service/EmailService.java"
click node_users "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/UserController.java"
click node_admin "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/AdminController.java"
click node_projectctl "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/ProjectController.java"
click node_projectsvc "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/service/ProjectService.java"
click node_requestsctl "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/TeamRequestController.java"
click node_requestsvc "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/service/TeamRequestService.java"
click node_projectdb "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/repository/ProjectRepository.java"
click node_requestdb "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/repository/TeamRequestRepository.java"
click node_userdb "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/repository/UserRepository.java"
click node_chat "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/TeamMessageController.java"
click node_ws "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/config/WebSocketConfig.java"
click node_video "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/components/VideoRoom.jsx"
click node_agoractl "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/AgoraController.java"
click node_gemini "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/service/GeminiService.java"
click node_github "https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/service/GithubService.java"

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_authctx,node_explore,node_projectui,node_api toneBlue
class node_projectctl,node_projectsvc,node_requestsctl,node_requestsvc,node_projectdb,node_requestdb,node_mysql toneAmber
class node_chat,node_ws,node_video,node_agoractl toneMint
class node_authctl,node_authsvc,node_email,node_users,node_admin,node_userdb toneRose
class node_gemini,node_github,node_geminisvc,node_githubapi,node_agora,node_developer toneIndigo
```

## Components

### Web Client

- [React App & Routes](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Auth Context](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Discovery & Profiles](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/pages/Explore.jsx): `frontend/src/pages/Explore.jsx`
- [Project Workspace UI](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/pages/ProjectDetails.jsx): `frontend/src/pages/ProjectDetails.jsx`
- [HTTP Client](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/lib/axios.js): `frontend/src/lib/axios.js`

### Project Matching

- [Project API](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/ProjectController.java): `backend/src/main/java/com/projectmate/controller/ProjectController.java`
- [Project Lifecycle](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/service/ProjectService.java): `backend/src/main/java/com/projectmate/service/ProjectService.java`
- [Team Request API](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/TeamRequestController.java): `backend/src/main/java/com/projectmate/controller/TeamRequestController.java`
- [Team Formation](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/service/TeamRequestService.java): `backend/src/main/java/com/projectmate/service/TeamRequestService.java`
- [Project Records](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/repository/ProjectRepository.java): `backend/src/main/java/com/projectmate/repository/ProjectRepository.java`
- [Team Requests](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/repository/TeamRequestRepository.java): `backend/src/main/java/com/projectmate/repository/TeamRequestRepository.java`
- **MySQL**

### Team Collaboration

- [Real-Time Chat](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/TeamMessageController.java): `backend/src/main/java/com/projectmate/controller/TeamMessageController.java`
- [WebSocket Broker](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/config/WebSocketConfig.java): `backend/src/main/java/com/projectmate/config/WebSocketConfig.java`
- [Video & Screen Sharing](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/frontend/src/components/VideoRoom.jsx): `frontend/src/components/VideoRoom.jsx`
- [Agora Token API](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/AgoraController.java): `backend/src/main/java/com/projectmate/controller/AgoraController.java`

### Identity & Admin

- [Authentication API](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/AuthController.java): `backend/src/main/java/com/projectmate/controller/AuthController.java`
- [Authentication Service](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/service/AuthService.java): `backend/src/main/java/com/projectmate/service/AuthService.java`
- [Reset Email](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/service/EmailService.java): `backend/src/main/java/com/projectmate/service/EmailService.java`
- [User & Profile API](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/UserController.java): `backend/src/main/java/com/projectmate/controller/UserController.java`
- [Admin API](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/controller/AdminController.java): `backend/src/main/java/com/projectmate/controller/AdminController.java`
- [User Records](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/repository/UserRepository.java): `backend/src/main/java/com/projectmate/repository/UserRepository.java`

### External Services

- [AI Mentor](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/service/GeminiService.java): `backend/src/main/java/com/projectmate/service/GeminiService.java`
- [Commit Sync](https://github.com/rahulsahu009/projectmate-the-matchmaker-and-ai-mentor-for-great-projects/blob/main/backend/src/main/java/com/projectmate/service/GithubService.java): `backend/src/main/java/com/projectmate/service/GithubService.java`
- **Google Gemini**
- **GitHub API**
- **Agora RTC**

### Other components

- **Developer**

## Connections

- Developer → React App & Routes: uses
- React App & Routes → Auth Context: provides auth
- React App & Routes → Discovery & Profiles: routes to
- React App & Routes → Project Workspace UI: routes to
- Discovery & Profiles → HTTP Client: requests data
- Project Workspace UI → HTTP Client: requests actions
- Auth Context → HTTP Client: requests auth
- HTTP Client → Authentication API: REST requests
- HTTP Client → User & Profile API: REST requests
- HTTP Client → Project API: REST requests
- HTTP Client → Team Request API: REST requests
- Authentication API → Authentication Service: delegates
- Authentication Service → User Records: reads/writes
- Authentication Service → Reset Email: sends reset email
- User & Profile API → User Records: reads
- User & Profile API → Project Records: reads
- User & Profile API → Team Requests: reads
- Project API → Project Lifecycle: delegates
- Project API → AI Mentor: enhances description
- Project Lifecycle → Project Records: reads/writes
- Project Lifecycle → User Records: reads
- Project Lifecycle → Team Requests: reads
- Project Lifecycle → AI Mentor: generates/analyzes
- Project Lifecycle → Commit Sync: syncs commits
- Team Request API → Team Formation: delegates
- Team Formation → User Records: reads
- Team Formation → Project Records: reads
- Team Formation → Team Requests: reads/writes
- Admin API → User Records: manages users
- Admin API → Project Records: manages projects
- Real-Time Chat → WebSocket Broker: publishes messages
- WebSocket Broker → Developer: broadcasts chat
- Project Workspace UI → Real-Time Chat: opens team chat
- Project Workspace UI → Video & Screen Sharing: opens video room
- Video & Screen Sharing → Agora RTC: joins RTC
- Project Workspace UI → Agora Token API: requests token
- Agora Token API → Agora RTC: issues credentials
- AI Mentor → Google Gemini: calls API
- Commit Sync → GitHub API: fetches commits
- Project Records → MySQL: persists
- Team Requests → MySQL: persists
- User Records → MySQL: persists
