# wonder37-debug/campushub architecture

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

- Interactive diagram: https://gitdiagram.com/wonder37-debug/campushub
- Repository: https://github.com/wonder37-debug/campushub

## Overview

CampusHub is a campus mutual-help platform: students publish needs, moderators review them, peers accept and execute orders, participants confirm completion and review one another, with arbitration for disputes. The Vue client presents these workflows and calls a Spring API; backend domain services handle the business stages and persistence. README capabilities also include authentication, recommendations, notifications, administration, and uploads. Controller, frontend store, and several service implementations were not sampled, so detailed call wiring is limited to documented responsibilities and visible service behavior.

Main entry points: [`frontend/src/stores/campusHub.ts`](https://github.com/wonder37-debug/campushub/blob/main/frontend/src/stores/campusHub.ts) (Client state and API), [`backend/src/main/java/com/campushub/backend/review/service/ReviewApplicationServiceImpl.java`](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/review/service/ReviewApplicationServiceImpl.java) (Reviews and credit), [`backend/src/main/java/com/campushub/backend/order/service/OrderApplicationServiceImpl.java`](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/order/service/OrderApplicationServiceImpl.java) (Order service), [`backend/src/main/java/com/campushub/backend/auth/service/AuthApplicationServiceImpl.java`](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/auth/service/AuthApplicationServiceImpl.java) (Authentication service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_web["CampusHub interface<br/>[App.vue]"]
  node_clientstate["Client state and API<br/>[campusHub.ts]"]
  node_authpage["Sign-in and registration<br/>[AuthView.vue]"]
  node_demandpages["Browse and publish<br/>[DemandListView.vue]"]
  node_orderpages["Order workflow<br/>[OrdersView.vue]"]
end

subgraph group_identity["Identity and users"]
  node_authapi["Authentication API"]
  node_authservice["Authentication service"]
  node_users["User repository"]
end

subgraph group_marketplace["Needs and orders"]
  node_demandapi["Demand API"]
  node_demandservice["Demand service"]
  node_demandstore["Demand repository"]
  node_orderapi["Order API"]
  node_orderservice["Order service"]
  node_orderstore["Order repository"]
end

subgraph group_engagement["Trust and engagement"]
  node_reviewservice["Reviews and credit"]
  node_reviewstore["Review repository"]
  node_notificationapi["Notification API"]
  node_notificationservice["Notification service"]
  node_recommendapi["Recommendation API"]
  node_recommendservice["Personalized recommendations"]
end

subgraph group_operations["Platform operations"]
  node_adminapi["Admin API"]
  node_adminservice["Moderation and dashboard"]
  node_uploadapi["Image upload API"]
end

node_students(("Students"))
node_moderators(("Moderators"))
node_smtp["SMTP email"]
node_filedisk[("Uploaded files")]

node_students -->|"use"| node_web
node_moderators -->|"manage"| node_web
node_web -->|"dispatch"| node_clientstate
node_authpage -->|"submit credentials"| node_clientstate
node_demandpages -->|"request demands"| node_clientstate
node_orderpages -->|"manage orders"| node_clientstate
node_clientstate -->|"API requests"| node_authapi
node_clientstate -->|"API requests"| node_demandapi
node_clientstate -->|"API requests"| node_orderapi
node_authapi -->|"invoke"| node_authservice
node_authservice -->|"read/write users"| node_users
node_authservice -.->|"send verification"| node_smtp
node_demandapi -->|"invoke"| node_demandservice
node_demandservice -->|"read/write demands"| node_demandstore
node_orderapi -->|"invoke"| node_orderservice
node_orderservice -->|"read/write orders"| node_orderstore
node_orderservice -->|"check demand"| node_demandstore
node_reviewservice -->|"validate order"| node_orderstore
node_reviewservice -->|"save and query reviews"| node_reviewstore
node_reviewservice -->|"update credit"| node_users
node_reviewservice -->|"notify recipient"| node_notificationservice
node_notificationapi -->|"invoke"| node_notificationservice
node_recommendapi -->|"invoke"| node_recommendservice
node_adminapi -->|"invoke"| node_adminservice
node_adminservice -->|"review demands"| node_demandservice
node_adminservice -->|"resolve disputes"| node_orderservice
node_uploadapi -->|"store uploads"| node_filedisk

click node_web "https://github.com/wonder37-debug/campushub/blob/main/frontend/src/App.vue"
click node_clientstate "https://github.com/wonder37-debug/campushub/blob/main/frontend/src/stores/campusHub.ts"
click node_authpage "https://github.com/wonder37-debug/campushub/blob/main/frontend/src/views/AuthView.vue"
click node_demandpages "https://github.com/wonder37-debug/campushub/blob/main/frontend/src/views/DemandListView.vue"
click node_orderpages "https://github.com/wonder37-debug/campushub/blob/main/frontend/src/views/OrdersView.vue"
click node_authapi "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/AuthController.java"
click node_authservice "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/auth/service/AuthApplicationServiceImpl.java"
click node_users "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/auth/repository/UserRepository.java"
click node_demandapi "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/DemandController.java"
click node_demandservice "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/demand/service/DemandApplicationServiceImpl.java"
click node_demandstore "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/demand/repository/DemandRepository.java"
click node_orderapi "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/OrderController.java"
click node_orderservice "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/order/service/OrderApplicationServiceImpl.java"
click node_orderstore "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/order/repository/OrderRepository.java"
click node_reviewservice "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/review/service/ReviewApplicationServiceImpl.java"
click node_reviewstore "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/review/repository/ReviewRepository.java"
click node_notificationapi "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/NotificationController.java"
click node_notificationservice "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/notification/service/NotificationApplicationServiceImpl.java"
click node_recommendapi "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/RecommendationController.java"
click node_recommendservice "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/recommendation/service/RecommendationApplicationServiceImpl.java"
click node_adminapi "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/AdminController.java"
click node_adminservice "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/admin/service/AdminApplicationServiceImpl.java"
click node_uploadapi "https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/FileUploadController.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_web,node_clientstate,node_authpage,node_demandpages,node_orderpages toneBlue
class node_authapi,node_authservice,node_users,node_filedisk toneAmber
class node_demandapi,node_demandservice,node_demandstore,node_orderapi,node_orderservice,node_orderstore toneMint
class node_reviewservice,node_reviewstore,node_notificationapi,node_notificationservice,node_recommendapi,node_recommendservice toneRose
class node_adminapi,node_adminservice,node_uploadapi,node_students,node_moderators,node_smtp toneIndigo
```

## Components

### Web client

- [CampusHub interface](https://github.com/wonder37-debug/campushub/blob/main/frontend/src/App.vue): `frontend/src/App.vue`
- [Client state and API](https://github.com/wonder37-debug/campushub/blob/main/frontend/src/stores/campusHub.ts): `frontend/src/stores/campusHub.ts`
- [Sign-in and registration](https://github.com/wonder37-debug/campushub/blob/main/frontend/src/views/AuthView.vue): `frontend/src/views/AuthView.vue`
- [Browse and publish](https://github.com/wonder37-debug/campushub/blob/main/frontend/src/views/DemandListView.vue): `frontend/src/views/DemandListView.vue`
- [Order workflow](https://github.com/wonder37-debug/campushub/blob/main/frontend/src/views/OrdersView.vue): `frontend/src/views/OrdersView.vue`

### Identity and users

- [Authentication API](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/AuthController.java): `backend/src/main/java/com/campushub/backend/api/AuthController.java`
- [Authentication service](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/auth/service/AuthApplicationServiceImpl.java): `backend/src/main/java/com/campushub/backend/auth/service/AuthApplicationServiceImpl.java`
- [User repository](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/auth/repository/UserRepository.java): `backend/src/main/java/com/campushub/backend/auth/repository/UserRepository.java`

### Needs and orders

- [Demand API](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/DemandController.java): `backend/src/main/java/com/campushub/backend/api/DemandController.java`
- [Demand service](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/demand/service/DemandApplicationServiceImpl.java): `backend/src/main/java/com/campushub/backend/demand/service/DemandApplicationServiceImpl.java`
- [Demand repository](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/demand/repository/DemandRepository.java): `backend/src/main/java/com/campushub/backend/demand/repository/DemandRepository.java`
- [Order API](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/OrderController.java): `backend/src/main/java/com/campushub/backend/api/OrderController.java`
- [Order service](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/order/service/OrderApplicationServiceImpl.java): `backend/src/main/java/com/campushub/backend/order/service/OrderApplicationServiceImpl.java`
- [Order repository](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/order/repository/OrderRepository.java): `backend/src/main/java/com/campushub/backend/order/repository/OrderRepository.java`

### Trust and engagement

- [Reviews and credit](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/review/service/ReviewApplicationServiceImpl.java): `backend/src/main/java/com/campushub/backend/review/service/ReviewApplicationServiceImpl.java`
- [Review repository](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/review/repository/ReviewRepository.java): `backend/src/main/java/com/campushub/backend/review/repository/ReviewRepository.java`
- [Notification API](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/NotificationController.java): `backend/src/main/java/com/campushub/backend/api/NotificationController.java`
- [Notification service](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/notification/service/NotificationApplicationServiceImpl.java): `backend/src/main/java/com/campushub/backend/notification/service/NotificationApplicationServiceImpl.java`
- [Recommendation API](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/RecommendationController.java): `backend/src/main/java/com/campushub/backend/api/RecommendationController.java`
- [Personalized recommendations](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/recommendation/service/RecommendationApplicationServiceImpl.java): `backend/src/main/java/com/campushub/backend/recommendation/service/RecommendationApplicationServiceImpl.java`

### Platform operations

- [Admin API](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/AdminController.java): `backend/src/main/java/com/campushub/backend/api/AdminController.java`
- [Moderation and dashboard](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/admin/service/AdminApplicationServiceImpl.java): `backend/src/main/java/com/campushub/backend/admin/service/AdminApplicationServiceImpl.java`
- [Image upload API](https://github.com/wonder37-debug/campushub/blob/main/backend/src/main/java/com/campushub/backend/api/FileUploadController.java): `backend/src/main/java/com/campushub/backend/api/FileUploadController.java`

### Other components

- **Students**
- **Moderators**
- **SMTP email**
- **Uploaded files**

## Connections

- Students → CampusHub interface: use
- Moderators → CampusHub interface: manage
- CampusHub interface → Client state and API: dispatch
- Sign-in and registration → Client state and API: submit credentials
- Browse and publish → Client state and API: request demands
- Order workflow → Client state and API: manage orders
- Client state and API → Authentication API: API requests
- Client state and API → Demand API: API requests
- Client state and API → Order API: API requests
- Authentication API → Authentication service: invoke
- Authentication service → User repository: read/write users
- Authentication service → SMTP email: send verification
- Demand API → Demand service: invoke
- Demand service → Demand repository: read/write demands
- Order API → Order service: invoke
- Order service → Order repository: read/write orders
- Order service → Demand repository: check demand
- Reviews and credit → Order repository: validate order
- Reviews and credit → Review repository: save and query reviews
- Reviews and credit → User repository: update credit
- Reviews and credit → Notification service: notify recipient
- Notification API → Notification service: invoke
- Recommendation API → Personalized recommendations: invoke
- Admin API → Moderation and dashboard: invoke
- Moderation and dashboard → Demand service: review demands
- Moderation and dashboard → Order service: resolve disputes
- Image upload API → Uploaded files: store uploads
