# shanmukha5269/collabhub architecture

> Architecture diagram of the GitHub repository shanmukha5269/collabhub, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-02). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/shanmukha5269/collabhub
- Repository: https://github.com/shanmukha5269/collabhub

## Overview

#### Purpose and Runtime
CollabHub is a Java/Spring Boot backend for collaborative workspaces combining member management, project planning (projects, sprints, issues), channels/messages, and administrator controls. The application entry point is `backend/collabHub/src/main/java/com/collabHub/CollabHubApplication.java`; Maven build/runtime dependencies are defined in `backend/collabHub/pom.xml`.

#### API and Layering Boundary
Each domain follows controller → service interface/implementation → JPA repository → entity, with DTOs separating HTTP/WebSocket contracts from persistence models. Representative boundaries are `backend/collabHub/src/main/java/com/collabHub/workspace/controller/WorkspaceController.java`, `backend/collabHub/src/main/java/com/collabHub/workspace/service/WorkspaceServiceImpl.java`, and `backend/collabHub/src/main/java/com/collabHub/workspace/repository/WorkspaceRepository.java`.

#### Identity, Authentication, and Authorization
Users have roles and status, while authentication exposes login-related APIs and issues/validates JWTs. Requests traverse the JWT filter and Spring security configuration before protected controllers; services can obtain the authenticated identity through shared security utilities. Core paths: `backend/collabHub/src/main/java/com/collabHub/auth/security/JwtAuthenticationFilter.java`, `backend/collabHub/src/main/java/com/collabHub/auth/security/JwtTokenProvider.java`, `backend/collabHub/src/main/java/com/collabHub/config/SecurityConfig.java`.

#### Workspace as the Tenancy/Membership Root
A workspace is the primary collaboration boundary, with a separate membership association and workspace-scoped roles. Workspace APIs cover creation, member changes, and ownership transfer; suspended-workspace handling is represented as a domain exception and administrator operation. Core paths: `backend/collabHub/src/main/java/com/collabHub/workspace/entity/Workspace.java`, `backend/collabHub/src/main/java/com/collabHub/workspace/entity/WorkspaceMember.java`, `backend/collabHub/src/main/java/com/collabHub/workspace/service/WorkspaceMemberServiceImpl.java`.

#### Planning Domain
Projects, sprints, and issues form the work-management flow. Projects provide the planning container; sprints have lifecycle status and expose board-oriented responses; issues carry type, priority, and status and support status-specific updates. These services enforce domain lookup/access before repository persistence. Core paths: `backend/collabHub/src/main/java/com/collabHub/project/service/ProjectServiceImpl.java`, `backend/collabHub/src/main/java/com/collabHub/sprint/service/SprintServiceImpl.java`, `backend/collabHub/src/main/java/com/collabHub/issue/service/IssueServiceImpl.java`.

#### Collaboration and Realtime Messaging
Channels and channel membership model conversation access. Messages are persisted via the message service/repository and exposed by a message controller. STOMP WebSocket configuration and a connection listener provide the realtime transport boundary, alongside the HTTP APIs. Core paths: `backend/collabHub/src/main/java/com/collabHub/config/StompWebSocketConfig.java`, `backend/collabHub/src/main/java/com/collabHub/listener/WebSocketConnectListener.java`, `backend/collabHub/src/main/java/com/collabHub/message/service/MessageServiceImpl.java`.

#### Administration, Persistence, and Failure Semantics
Administrative APIs aggregate platform/workspace statistics and suspend workspaces. Persistence is Spring Data-style repository-backed, with concrete database and runtime settings expected in `backend/collabHub/src/main/resources/application.properties` and environment inputs documented by `backend/collabHub/.env.example`. Domain failures are normalized at the HTTP boundary through `backend/collabHub/src/main/java/com/collabHub/common/exception/GlobalExceptionHandler.java`; specific exceptions encode access denial, bans, missing resources, and suspended workspaces.

Main entry points: [`backend/collabHub/src/main/java/com/collabHub/workspace/service/WorkspaceServiceImpl.java`](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/workspace/service/WorkspaceServiceImpl.java) (Workspace services), [`backend/collabHub/src/main/java/com/collabHub/project/service/ProjectServiceImpl.java`](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/project/service/ProjectServiceImpl.java) (Planning services), [`backend/collabHub/src/main/java/com/collabHub/config/SecurityConfig.java`](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/config/SecurityConfig.java) (Security configuration), [`backend/collabHub/src/main/java/com/collabHub/config/StompWebSocketConfig.java`](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/config/StompWebSocketConfig.java) (STOMP transport)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Runtime"]
  node_clients(("HTTP clients<br/>external client"))
  node_application{{"Spring Boot application<br/>application entry"}}
  node_build["Maven build<br/>build definition<br/>[pom.xml]"]
end

subgraph group_identity["Identity &amp; access"]
  node_security_config["Security configuration<br/>Spring Security"]
  node_jwt_filter["JWT authentication filter<br/>security filter"]
  node_jwt_provider["JWT token provider<br/>token service"]
end

subgraph group_workspace["Workspace tenancy"]
  node_workspace_api["Workspace APIs<br/>controller layer"]
  node_workspace_services["Workspace services<br/>service layer"]
  node_membership_service["Membership service<br/>service layer"]
  node_workspace_repository["Workspace repository<br/>JPA repository"]
  node_workspace_model["Workspace &amp; membership<br/>JPA entities<br/>[Workspace.java]"]
end

subgraph group_planning["Planning"]
  node_planning_services["Planning services<br/>service layer"]
  node_sprint_service["Sprint service<br/>service layer"]
  node_issue_service["Issue service<br/>service layer"]
end

subgraph group_collaboration["Collaboration"]
  node_realtime_clients(("STOMP clients<br/>WebSocket client"))
  node_websocket_transport["STOMP transport<br/>WebSocket configuration"]
  node_connection_listener["Connection listener<br/>WebSocket listener"]
  node_message_service["Message service<br/>service layer"]
end

subgraph group_platform["Platform"]
  node_database[("Database<br/>persistent store")]
  node_admin_api["Administration APIs<br/>controller/service boundary"]
  node_exception_handler["Global exception handler<br/>HTTP error boundary"]
end

node_build -->|"builds"| node_application
node_clients -->|"requests"| node_security_config
node_security_config -->|"installs"| node_jwt_filter
node_jwt_filter -->|"validates token"| node_jwt_provider
node_security_config -->|"authorizes"| node_workspace_api
node_workspace_api -->|"delegates"| node_workspace_services
node_workspace_services -->|"manages members"| node_membership_service
node_workspace_services -->|"persists"| node_workspace_repository
node_membership_service -->|"updates roles"| node_workspace_model
node_workspace_repository -->|"maps"| node_workspace_model
node_workspace_repository -->|"stores"| node_database
node_workspace_services -.->|"provides workspace access"| node_planning_services
node_planning_services -->|"coordinates"| node_sprint_service
node_planning_services -->|"coordinates"| node_issue_service
node_planning_services -->|"persists planning data"| node_database
node_realtime_clients -->|"connects"| node_websocket_transport
node_websocket_transport -->|"emits connect events"| node_connection_listener
node_websocket_transport -->|"routes messages"| node_message_service
node_message_service -->|"persists messages"| node_database
node_admin_api -->|"suspends workspaces"| node_workspace_services
node_admin_api -->|"reads statistics"| node_database
node_workspace_api -.->|"domain failures"| node_exception_handler
node_application -->|"boots"| node_security_config
node_application -->|"boots"| node_websocket_transport

click node_application "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/CollabHubApplication.java"
click node_security_config "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/config/SecurityConfig.java"
click node_jwt_filter "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/auth/security/JwtAuthenticationFilter.java"
click node_jwt_provider "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/auth/security/JwtTokenProvider.java"
click node_workspace_api "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/workspace/controller/WorkspaceController.java"
click node_workspace_services "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/workspace/service/WorkspaceServiceImpl.java"
click node_membership_service "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/workspace/service/WorkspaceMemberServiceImpl.java"
click node_workspace_repository "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/workspace/repository/WorkspaceRepository.java"
click node_workspace_model "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/workspace/entity/Workspace.java"
click node_planning_services "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/project/service/ProjectServiceImpl.java"
click node_sprint_service "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/sprint/service/SprintServiceImpl.java"
click node_issue_service "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/issue/service/IssueServiceImpl.java"
click node_websocket_transport "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/config/StompWebSocketConfig.java"
click node_connection_listener "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/listener/WebSocketConnectListener.java"
click node_message_service "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/message/service/MessageServiceImpl.java"
click node_database "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/resources/application.properties"
click node_exception_handler "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/common/exception/GlobalExceptionHandler.java"
click node_build "https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/pom.xml"

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_clients,node_application,node_build toneBlue
class node_security_config,node_jwt_filter,node_jwt_provider toneAmber
class node_workspace_api,node_workspace_services,node_membership_service,node_workspace_repository,node_workspace_model toneMint
class node_planning_services,node_sprint_service,node_issue_service toneRose
class node_realtime_clients,node_websocket_transport,node_connection_listener,node_message_service toneIndigo
class node_database,node_admin_api,node_exception_handler toneTeal
```

## Components

### Runtime

- **HTTP clients**: external client
- [Spring Boot application](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/CollabHubApplication.java): application entry · `backend/collabHub/src/main/java/com/collabHub/CollabHubApplication.java`
- [Maven build](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/pom.xml): build definition · `backend/collabHub/pom.xml`

### Identity & access

- [Security configuration](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/config/SecurityConfig.java): Spring Security · Secures protected controller routes. · `backend/collabHub/src/main/java/com/collabHub/config/SecurityConfig.java`
- [JWT authentication filter](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/auth/security/JwtAuthenticationFilter.java): security filter · `backend/collabHub/src/main/java/com/collabHub/auth/security/JwtAuthenticationFilter.java`
- [JWT token provider](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/auth/security/JwtTokenProvider.java): token service · Issues and validates JWTs. · `backend/collabHub/src/main/java/com/collabHub/auth/security/JwtTokenProvider.java`

### Workspace tenancy

- [Workspace APIs](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/workspace/controller/WorkspaceController.java): controller layer · Creates workspaces and manages members and ownership. · `backend/collabHub/src/main/java/com/collabHub/workspace/controller/WorkspaceController.java`
- [Workspace services](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/workspace/service/WorkspaceServiceImpl.java): service layer · Enforces tenancy and membership rules. · `backend/collabHub/src/main/java/com/collabHub/workspace/service/WorkspaceServiceImpl.java`
- [Membership service](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/workspace/service/WorkspaceMemberServiceImpl.java): service layer · Manages workspace-scoped roles. · `backend/collabHub/src/main/java/com/collabHub/workspace/service/WorkspaceMemberServiceImpl.java`
- [Workspace repository](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/workspace/repository/WorkspaceRepository.java): JPA repository · `backend/collabHub/src/main/java/com/collabHub/workspace/repository/WorkspaceRepository.java`
- [Workspace & membership](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/workspace/entity/Workspace.java): JPA entities · Tenancy root and member association. · `backend/collabHub/src/main/java/com/collabHub/workspace/entity/Workspace.java`

### Planning

- [Planning services](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/project/service/ProjectServiceImpl.java): service layer · Projects, sprints, and issues enforce scoped access before persistence. · `backend/collabHub/src/main/java/com/collabHub/project/service/ProjectServiceImpl.java`
- [Sprint service](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/sprint/service/SprintServiceImpl.java): service layer · Manages sprint lifecycle and board responses. · `backend/collabHub/src/main/java/com/collabHub/sprint/service/SprintServiceImpl.java`
- [Issue service](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/issue/service/IssueServiceImpl.java): service layer · Manages typed, prioritized issue status updates. · `backend/collabHub/src/main/java/com/collabHub/issue/service/IssueServiceImpl.java`

### Collaboration

- **STOMP clients**: WebSocket client
- [STOMP transport](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/config/StompWebSocketConfig.java): WebSocket configuration · `backend/collabHub/src/main/java/com/collabHub/config/StompWebSocketConfig.java`
- [Connection listener](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/listener/WebSocketConnectListener.java): WebSocket listener · `backend/collabHub/src/main/java/com/collabHub/listener/WebSocketConnectListener.java`
- [Message service](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/message/service/MessageServiceImpl.java): service layer · Persists channel messages and exposes messaging operations. · `backend/collabHub/src/main/java/com/collabHub/message/service/MessageServiceImpl.java`

### Platform

- [Database](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/resources/application.properties): persistent store · Spring Data repositories persist domain entities. · `backend/collabHub/src/main/resources/application.properties`
- **Administration APIs**: controller/service boundary · Aggregates statistics and suspends workspaces.
- [Global exception handler](https://github.com/shanmukha5269/collabhub/blob/master/backend/collabHub/src/main/java/com/collabHub/common/exception/GlobalExceptionHandler.java): HTTP error boundary · Normalizes domain failures into HTTP responses. · `backend/collabHub/src/main/java/com/collabHub/common/exception/GlobalExceptionHandler.java`

## Connections

- Maven build → Spring Boot application: builds
- HTTP clients → Security configuration: requests
- Security configuration → JWT authentication filter: installs
- JWT authentication filter → JWT token provider: validates token
- Security configuration → Workspace APIs: authorizes
- Workspace APIs → Workspace services: delegates
- Workspace services → Membership service: manages members
- Workspace services → Workspace repository: persists
- Membership service → Workspace & membership: updates roles
- Workspace repository → Workspace & membership: maps
- Workspace repository → Database: stores
- Workspace services → Planning services: provides workspace access
- Planning services → Sprint service: coordinates
- Planning services → Issue service: coordinates
- Planning services → Database: persists planning data
- STOMP clients → STOMP transport: connects
- STOMP transport → Connection listener: emits connect events
- STOMP transport → Message service: routes messages
- Message service → Database: persists messages
- Administration APIs → Workspace services: suspends workspaces
- Administration APIs → Database: reads statistics
- Workspace APIs → Global exception handler: domain failures
- Spring Boot application → Security configuration: boots
- Spring Boot application → STOMP transport: boots
