# loyzkie2005/campushub architecture

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

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

## Overview

CampusHub is a campus marketplace and facilities-booking platform, with Django handling web application rules and a separate FastAPI service handling messaging. Users and administrators reach marketplace, facility and account workflows through the Django application; the chat client uses its own HTTP/WebSocket service. The map preserves the documented marketplace, booking, service, reporting and account capabilities. Some subsystem paths are directory-level because their individual entry points were not sampled; unsampled relationships are omitted rather than inferred.

Main entry points: [`backend/chat_service/app/routers/conversations.py`](https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/routers/conversations.py) (Conversation routes), [`backend/chat_service/app/routers/websocket.py`](https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/routers/websocket.py) (Realtime routes), [`backend/core/core/urls.py`](https://github.com/loyzkie2005/campushub/blob/main/backend/core/core/urls.py) (Django application), [`backend/core/api/models.py`](https://github.com/loyzkie2005/campushub/blob/main/backend/core/api/models.py) (Marketplace records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_accounts["Accounts and access"]
  node_accounts["Accounts and roles"]
  node_account_data[("Account records<br/>[models.py]")]
end

subgraph group_market["Marketplace"]
  node_market_api["Marketplace APIs<br/>[views.py]"]
  node_market_data[("Marketplace records<br/>[models.py]")]
  node_inventory["Inventory services<br/>[inventory.py]"]
  node_inventory_records["Inventory records sync"]
  node_fulfillment["Order fulfillment<br/>[fulfillment.py]"]
end

subgraph group_facilities["Facilities and services"]
  node_facilities["Facility workflows"]
  node_facility_data[("Facility and booking records<br/>[models.py]")]
  node_service_config["Service configuration"]
  node_service_catalog["Service catalog<br/>[catalog.py]"]
  node_operating_schedule["Operating schedules"]
  node_rental_config["Rental configuration"]
  node_reports["Reports and analytics"]
end

subgraph group_messaging["Messaging"]
  node_chat_app["Chat service<br/>[main.py]"]
  node_chat_auth["Chat authentication<br/>[auth.py]"]
  node_chat_conversations["Conversation routes<br/>[conversations.py]"]
  node_chat_websocket["Realtime routes<br/>[websocket.py]"]
  node_chat_presence["Presence routes<br/>[presence.py]"]
  node_chat_services["Conversation logic<br/>[services.py]"]
  node_chat_data[("Chat database<br/>[database.py]")]
  node_realtime["Realtime connections<br/>[realtime.py]"]
end

node_user(("Campus users"))
node_django["Django application<br/>[urls.py]"]
node_chat_client(("Chat clients"))
node_firebase["Firebase messaging"]

node_user -->|"uses"| node_django
node_django -.->|"handles accounts"| node_accounts
node_accounts -->|"manages"| node_account_data
node_django -.->|"routes requests"| node_market_api
node_market_api -->|"uses records"| node_market_data
node_market_data -->|"syncs inventory"| node_inventory_records
node_inventory -->|"reads and updates"| node_market_data
node_market_api -->|"uses fulfillment"| node_fulfillment
node_fulfillment -->|"updates orders"| node_market_data
node_django -.->|"serves bookings"| node_facilities
node_facilities -.->|"uses records"| node_facility_data
node_service_config -->|"uses labels"| node_service_catalog
node_service_config -->|"validates hours"| node_operating_schedule
node_service_config -->|"uses configuration"| node_rental_config
node_django -.->|"provides reporting"| node_reports
node_chat_client -.->|"connects"| node_chat_app
node_chat_app -->|"registers routes"| node_chat_conversations
node_chat_app -->|"registers routes"| node_chat_websocket
node_chat_app -->|"registers routes"| node_chat_presence
node_chat_conversations -->|"authenticates"| node_chat_auth
node_chat_conversations -->|"calls logic"| node_chat_services
node_chat_conversations -->|"uses session"| node_chat_data
node_chat_conversations -->|"broadcasts events"| node_realtime
node_chat_websocket -->|"decodes token"| node_chat_auth
node_chat_websocket -->|"calls logic"| node_chat_services
node_chat_websocket -->|"opens session"| node_chat_data
node_chat_websocket -->|"broadcasts events"| node_realtime
node_chat_presence -->|"authenticates"| node_chat_auth
node_chat_presence -->|"uses connections"| node_realtime
node_market_data -->|"queues review pushes"| node_firebase

click node_django "https://github.com/loyzkie2005/campushub/blob/main/backend/core/core/urls.py"
click node_accounts "https://github.com/loyzkie2005/campushub/tree/main/backend/core/accounts"
click node_account_data "https://github.com/loyzkie2005/campushub/blob/main/backend/core/accounts/models.py"
click node_market_api "https://github.com/loyzkie2005/campushub/blob/main/backend/core/api/views.py"
click node_market_data "https://github.com/loyzkie2005/campushub/blob/main/backend/core/api/models.py"
click node_inventory "https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/marketplace/services/inventory.py"
click node_inventory_records "https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/marketplace/services/inventory_records.py"
click node_fulfillment "https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/marketplace/services/fulfillment.py"
click node_facilities "https://github.com/loyzkie2005/campushub/tree/main/backend/core/modules/facilities"
click node_facility_data "https://github.com/loyzkie2005/campushub/blob/main/backend/core/api/models.py"
click node_service_config "https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/facilities/services/service_configuration.py"
click node_service_catalog "https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/facilities/services/catalog.py"
click node_operating_schedule "https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/facilities/services/operating_schedule.py"
click node_rental_config "https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/facilities/services/rental_configuration.py"
click node_reports "https://github.com/loyzkie2005/campushub/tree/main/backend/core/modules/reports"
click node_chat_app "https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/main.py"
click node_chat_auth "https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/auth.py"
click node_chat_conversations "https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/routers/conversations.py"
click node_chat_websocket "https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/routers/websocket.py"
click node_chat_presence "https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/routers/presence.py"
click node_chat_services "https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/services.py"
click node_chat_data "https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/database.py"
click node_realtime "https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/realtime.py"

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_accounts,node_account_data,node_user,node_chat_client toneBlue
class node_market_api,node_market_data,node_inventory,node_inventory_records,node_fulfillment toneAmber
class node_facilities,node_facility_data,node_service_config,node_service_catalog,node_operating_schedule,node_rental_config,node_reports toneMint
class node_chat_app,node_chat_auth,node_chat_conversations,node_chat_websocket,node_chat_presence,node_chat_services,node_chat_data,node_realtime toneRose
class node_django toneTeal
class node_firebase toneIndigo
```

## Components

### Accounts and access

- [Accounts and roles](https://github.com/loyzkie2005/campushub/tree/main/backend/core/accounts): `backend/core/accounts`
- [Account records](https://github.com/loyzkie2005/campushub/blob/main/backend/core/accounts/models.py): `backend/core/accounts/models.py`

### Marketplace

- [Marketplace APIs](https://github.com/loyzkie2005/campushub/blob/main/backend/core/api/views.py): `backend/core/api/views.py`
- [Marketplace records](https://github.com/loyzkie2005/campushub/blob/main/backend/core/api/models.py): `backend/core/api/models.py`
- [Inventory services](https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/marketplace/services/inventory.py): `backend/core/modules/marketplace/services/inventory.py`
- [Inventory records sync](https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/marketplace/services/inventory_records.py): `backend/core/modules/marketplace/services/inventory_records.py`
- [Order fulfillment](https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/marketplace/services/fulfillment.py): `backend/core/modules/marketplace/services/fulfillment.py`

### Facilities and services

- [Facility workflows](https://github.com/loyzkie2005/campushub/tree/main/backend/core/modules/facilities): `backend/core/modules/facilities`
- [Facility and booking records](https://github.com/loyzkie2005/campushub/blob/main/backend/core/api/models.py): `backend/core/api/models.py`
- [Service configuration](https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/facilities/services/service_configuration.py): `backend/core/modules/facilities/services/service_configuration.py`
- [Service catalog](https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/facilities/services/catalog.py): `backend/core/modules/facilities/services/catalog.py`
- [Operating schedules](https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/facilities/services/operating_schedule.py): `backend/core/modules/facilities/services/operating_schedule.py`
- [Rental configuration](https://github.com/loyzkie2005/campushub/blob/main/backend/core/modules/facilities/services/rental_configuration.py): `backend/core/modules/facilities/services/rental_configuration.py`
- [Reports and analytics](https://github.com/loyzkie2005/campushub/tree/main/backend/core/modules/reports): `backend/core/modules/reports`

### Messaging

- [Chat service](https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/main.py): `backend/chat_service/app/main.py`
- [Chat authentication](https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/auth.py): `backend/chat_service/app/auth.py`
- [Conversation routes](https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/routers/conversations.py): `backend/chat_service/app/routers/conversations.py`
- [Realtime routes](https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/routers/websocket.py): `backend/chat_service/app/routers/websocket.py`
- [Presence routes](https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/routers/presence.py): `backend/chat_service/app/routers/presence.py`
- [Conversation logic](https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/services.py): `backend/chat_service/app/services.py`
- [Chat database](https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/database.py): `backend/chat_service/app/database.py`
- [Realtime connections](https://github.com/loyzkie2005/campushub/blob/main/backend/chat_service/app/realtime.py): `backend/chat_service/app/realtime.py`

### Other components

- **Campus users**
- [Django application](https://github.com/loyzkie2005/campushub/blob/main/backend/core/core/urls.py): `backend/core/core/urls.py`
- **Chat clients**
- **Firebase messaging**

## Connections

- Campus users → Django application: uses
- Django application → Accounts and roles: handles accounts
- Accounts and roles → Account records: manages (evidence: `backend/core/accounts/models.py`)
- Django application → Marketplace APIs: routes requests
- Marketplace APIs → Marketplace records: uses records (evidence: `backend/core/api/views.py`)
- Marketplace records → Inventory records sync: syncs inventory (evidence: `backend/core/api/models.py`)
- Inventory services → Marketplace records: reads and updates (evidence: `backend/core/modules/marketplace/services/inventory.py`)
- Marketplace APIs → Order fulfillment: uses fulfillment (evidence: `backend/core/api/views.py`)
- Order fulfillment → Marketplace records: updates orders (evidence: `backend/core/modules/marketplace/services/fulfillment.py`)
- Django application → Facility workflows: serves bookings
- Facility workflows → Facility and booking records: uses records (evidence: `backend/core/modules/facilities/mobile_services.py`)
- Service configuration → Service catalog: uses labels (evidence: `backend/core/modules/facilities/services/service_configuration.py`)
- Service configuration → Operating schedules: validates hours (evidence: `backend/core/modules/facilities/services/service_configuration.py`)
- Service configuration → Rental configuration: uses configuration (evidence: `backend/core/modules/facilities/services/service_configuration.py`)
- Django application → Reports and analytics: provides reporting
- Chat clients → Chat service: connects
- Chat service → Conversation routes: registers routes (evidence: `backend/chat_service/app/main.py`)
- Chat service → Realtime routes: registers routes (evidence: `backend/chat_service/app/main.py`)
- Chat service → Presence routes: registers routes (evidence: `backend/chat_service/app/main.py`)
- Conversation routes → Chat authentication: authenticates (evidence: `backend/chat_service/app/routers/conversations.py`)
- Conversation routes → Conversation logic: calls logic (evidence: `backend/chat_service/app/routers/conversations.py`)
- Conversation routes → Chat database: uses session (evidence: `backend/chat_service/app/routers/conversations.py`)
- Conversation routes → Realtime connections: broadcasts events (evidence: `backend/chat_service/app/routers/conversations.py`)
- Realtime routes → Chat authentication: decodes token (evidence: `backend/chat_service/app/routers/websocket.py`)
- Realtime routes → Conversation logic: calls logic (evidence: `backend/chat_service/app/routers/websocket.py`)
- Realtime routes → Chat database: opens session (evidence: `backend/chat_service/app/routers/websocket.py`)
- Realtime routes → Realtime connections: broadcasts events (evidence: `backend/chat_service/app/routers/websocket.py`)
- Presence routes → Chat authentication: authenticates (evidence: `backend/chat_service/app/routers/presence.py`)
- Presence routes → Realtime connections: uses connections (evidence: `backend/chat_service/app/routers/presence.py`)
- Marketplace records → Firebase messaging: queues review pushes (evidence: `backend/core/api/models.py`)
