# vraj911/jeerai architecture

> Architecture diagram of the GitHub repository vraj911/jeerai, 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/vraj911/jeerai
- Repository: https://github.com/vraj911/jeerai

## Overview

Jeerai is a collaborative project and issue-tracking application with a React frontend and Spring backend. Its principal workflow is managing workspace projects and issues, with supporting authentication, membership, invitations, activity, analytics, automation, notifications, and AI-assisted work. The source index supports several backend service-to-repository relationships; the README is empty and most controller and frontend implementation files were not sampled, so those connections are left unverified rather than presented as confirmed calls.

Main entry points: [`frontend/src/api/client.ts`](https://github.com/vraj911/jeerai/blob/main/frontend/src/api/client.ts) (API client), [`backend/jeerai-backend/src/main/java/com/jeerai/backend/service/issue/IssueService.java`](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/issue/IssueService.java) (Issue service), [`frontend/src/App.tsx`](https://github.com/vraj911/jeerai/blob/main/frontend/src/App.tsx) (Application shell), [`backend/jeerai-backend/src/main/java/com/jeerai/backend/service/workspace/WorkspaceMemberService.java`](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/workspace/WorkspaceMemberService.java) (Membership service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_app["Application shell<br/>[App.tsx]"]
  node_workspace_ui["Workspace pages"]
  node_project_ui["Project pages"]
  node_issue_ui["Issue detail"]
  node_system_ui["AI and activity"]
  node_api_client["API client<br/>[client.ts]"]
end

subgraph group_api["Backend API"]
  node_auth_controller["Authentication API"]
  node_workspace_controller["Workspace API"]
  node_issue_controller["Issue API"]
  node_ai_controller["AI API<br/>[AiController.java]"]
  node_analytics_controller["Analytics API"]
  node_automation_controller["Automation API"]
end

subgraph group_domain["Project services"]
  node_auth["Authentication service<br/>[AuthService.java]"]
  node_invitation["Invitation service"]
  node_membership["Membership service"]
  node_workspace_access["Access control"]
  node_issue["Issue service<br/>[IssueService.java]"]
  node_ai_context["AI context"]
  node_user_service["User service<br/>[UserService.java]"]
end

subgraph group_data["Persistence"]
  node_issue_repo[("Issue repository")]
  node_project_repo[("Project repository")]
  node_activity_repo[("Activity repository")]
  node_notification_repo[("Notification repository")]
  node_user_repo[("User repository")]
  node_member_repo[("Membership repository")]
  node_invitation_repo[("Invitation repository")]
end

node_user(("User"))

node_user -.->|"uses"| node_app
node_app -.->|"routes to"| node_workspace_ui
node_app -.->|"routes to"| node_project_ui
node_app -.->|"routes to"| node_issue_ui
node_app -.->|"routes to"| node_system_ui
node_workspace_ui -.->|"requests"| node_api_client
node_project_ui -.->|"requests"| node_api_client
node_issue_ui -.->|"requests"| node_api_client
node_system_ui -.->|"requests"| node_api_client
node_api_client -.->|"HTTP calls"| node_workspace_controller
node_api_client -.->|"HTTP calls"| node_issue_controller
node_api_client -.->|"HTTP calls"| node_ai_controller
node_api_client -.->|"HTTP calls"| node_analytics_controller
node_api_client -.->|"HTTP calls"| node_automation_controller
node_auth_controller -.->|"delegates"| node_auth
node_workspace_controller -.->|"delegates"| node_membership
node_issue_controller -.->|"delegates"| node_issue
node_ai_controller -.->|"delegates"| node_ai_context
node_automation_controller -.->|"delegates"| node_issue
node_invitation -->|"adds members"| node_membership
node_invitation -->|"reads and writes"| node_invitation_repo
node_invitation -->|"looks up users"| node_user_service
node_membership -->|"reads and writes"| node_member_repo
node_membership -->|"loads users"| node_user_service
node_workspace_access -->|"checks membership"| node_membership
node_workspace_access -->|"loads projects"| node_project_repo
node_issue -->|"uses"| node_issue_repo
node_issue -->|"uses"| node_project_repo
node_issue -->|"uses"| node_activity_repo
node_issue -->|"uses"| node_notification_repo
node_issue -->|"uses"| node_user_repo
node_ai_context -->|"loads issues"| node_issue_repo
node_ai_context -->|"loads project"| node_project_repo
node_ai_context -->|"counts activity"| node_activity_repo
node_user_service -.->|"reads and writes"| node_user_repo

click node_app "https://github.com/vraj911/jeerai/blob/main/frontend/src/App.tsx"
click node_workspace_ui "https://github.com/vraj911/jeerai/tree/main/frontend/src/pages/workspace"
click node_project_ui "https://github.com/vraj911/jeerai/tree/main/frontend/src/pages/project"
click node_issue_ui "https://github.com/vraj911/jeerai/blob/main/frontend/src/pages/issue/IssueDetailPage.tsx"
click node_system_ui "https://github.com/vraj911/jeerai/tree/main/frontend/src/pages/system"
click node_api_client "https://github.com/vraj911/jeerai/blob/main/frontend/src/api/client.ts"
click node_auth_controller "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/auth/AuthController.java"
click node_workspace_controller "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/workspace/WorkspaceController.java"
click node_issue_controller "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/issue/IssueController.java"
click node_ai_controller "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/ai/AiController.java"
click node_analytics_controller "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/analytics/AnalyticsController.java"
click node_automation_controller "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/automation/AutomationRuleController.java"
click node_auth "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/auth/AuthService.java"
click node_invitation "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/invitation/InvitationService.java"
click node_membership "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/workspace/WorkspaceMemberService.java"
click node_workspace_access "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/workspace/WorkspaceAccessService.java"
click node_issue "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/issue/IssueService.java"
click node_ai_context "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/ai/AiContextService.java"
click node_user_service "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/user/UserService.java"
click node_issue_repo "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/issue/IssueRepository.java"
click node_project_repo "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/project/ProjectRepository.java"
click node_activity_repo "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/activity/ActivityRepository.java"
click node_notification_repo "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/notification/NotificationRepository.java"
click node_user_repo "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/user/UserRepository.java"
click node_member_repo "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/workspace/WorkspaceMemberRepository.java"
click node_invitation_repo "https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/invitation/InvitationRepository.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_workspace_ui,node_project_ui,node_issue_ui,node_system_ui,node_api_client,node_user toneBlue
class node_auth_controller,node_workspace_controller,node_issue_controller,node_ai_controller,node_analytics_controller,node_automation_controller toneAmber
class node_auth,node_invitation,node_membership,node_workspace_access,node_issue,node_ai_context,node_user_service toneMint
class node_issue_repo,node_project_repo,node_activity_repo,node_notification_repo,node_user_repo,node_member_repo,node_invitation_repo toneRose
```

## Components

### Web client

- [Application shell](https://github.com/vraj911/jeerai/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Workspace pages](https://github.com/vraj911/jeerai/tree/main/frontend/src/pages/workspace): `frontend/src/pages/workspace`
- [Project pages](https://github.com/vraj911/jeerai/tree/main/frontend/src/pages/project): `frontend/src/pages/project`
- [Issue detail](https://github.com/vraj911/jeerai/blob/main/frontend/src/pages/issue/IssueDetailPage.tsx): `frontend/src/pages/issue/IssueDetailPage.tsx`
- [AI and activity](https://github.com/vraj911/jeerai/tree/main/frontend/src/pages/system): `frontend/src/pages/system`
- [API client](https://github.com/vraj911/jeerai/blob/main/frontend/src/api/client.ts): `frontend/src/api/client.ts`

### Backend API

- [Authentication API](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/auth/AuthController.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/auth/AuthController.java`
- [Workspace API](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/workspace/WorkspaceController.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/workspace/WorkspaceController.java`
- [Issue API](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/issue/IssueController.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/issue/IssueController.java`
- [AI API](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/ai/AiController.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/ai/AiController.java`
- [Analytics API](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/analytics/AnalyticsController.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/analytics/AnalyticsController.java`
- [Automation API](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/automation/AutomationRuleController.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/controller/automation/AutomationRuleController.java`

### Project services

- [Authentication service](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/auth/AuthService.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/auth/AuthService.java`
- [Invitation service](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/invitation/InvitationService.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/invitation/InvitationService.java`
- [Membership service](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/workspace/WorkspaceMemberService.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/workspace/WorkspaceMemberService.java`
- [Access control](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/workspace/WorkspaceAccessService.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/workspace/WorkspaceAccessService.java`
- [Issue service](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/issue/IssueService.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/issue/IssueService.java`
- [AI context](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/ai/AiContextService.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/ai/AiContextService.java`
- [User service](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/service/user/UserService.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/user/UserService.java`

### Persistence

- [Issue repository](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/issue/IssueRepository.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/issue/IssueRepository.java`
- [Project repository](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/project/ProjectRepository.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/project/ProjectRepository.java`
- [Activity repository](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/activity/ActivityRepository.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/activity/ActivityRepository.java`
- [Notification repository](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/notification/NotificationRepository.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/notification/NotificationRepository.java`
- [User repository](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/user/UserRepository.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/user/UserRepository.java`
- [Membership repository](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/workspace/WorkspaceMemberRepository.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/workspace/WorkspaceMemberRepository.java`
- [Invitation repository](https://github.com/vraj911/jeerai/blob/main/backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/invitation/InvitationRepository.java): `backend/jeerai-backend/src/main/java/com/jeerai/backend/repository/invitation/InvitationRepository.java`

### Other components

- **User**

## Connections

- User → Application shell: uses
- Application shell → Workspace pages: routes to
- Application shell → Project pages: routes to
- Application shell → Issue detail: routes to
- Application shell → AI and activity: routes to
- Workspace pages → API client: requests
- Project pages → API client: requests
- Issue detail → API client: requests
- AI and activity → API client: requests
- API client → Workspace API: HTTP calls
- API client → Issue API: HTTP calls
- API client → AI API: HTTP calls
- API client → Analytics API: HTTP calls
- API client → Automation API: HTTP calls
- Authentication API → Authentication service: delegates
- Workspace API → Membership service: delegates
- Issue API → Issue service: delegates
- AI API → AI context: delegates
- Automation API → Issue service: delegates
- Invitation service → Membership service: adds members (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/invitation/InvitationService.java`)
- Invitation service → Invitation repository: reads and writes (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/invitation/InvitationService.java`)
- Invitation service → User service: looks up users (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/invitation/InvitationService.java`)
- Membership service → Membership repository: reads and writes (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/workspace/WorkspaceMemberService.java`)
- Membership service → User service: loads users (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/workspace/WorkspaceMemberService.java`)
- Access control → Membership service: checks membership (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/workspace/WorkspaceAccessService.java`)
- Access control → Project repository: loads projects (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/workspace/WorkspaceAccessService.java`)
- Issue service → Issue repository: uses (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/issue/IssueService.java`)
- Issue service → Project repository: uses (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/issue/IssueService.java`)
- Issue service → Activity repository: uses (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/issue/IssueService.java`)
- Issue service → Notification repository: uses (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/issue/IssueService.java`)
- Issue service → User repository: uses (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/issue/IssueService.java`)
- AI context → Issue repository: loads issues (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/ai/AiContextService.java`)
- AI context → Project repository: loads project (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/ai/AiContextService.java`)
- AI context → Activity repository: counts activity (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/ai/AiContextService.java`)
- User service → User repository: reads and writes (evidence: `backend/jeerai-backend/src/main/java/com/jeerai/backend/service/user/UserService.java`)
