# nersus15/kamscode-meet architecture

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

## Overview

Kamscode Meet is a Laravel/Inertia meeting-room application. Users register or sign in, create or join rooms, become participants, and exchange video-call signaling; administration and profile management are separate supporting workflows. The sampled controllers show room persistence and broadcast dispatch, while the tree identifies the Vue call UI and event/channel modules. Their detailed client-side wiring and unsampled route mappings are not asserted.

Main entry points: [`routes/web.php`](https://github.com/nersus15/kamscode-meet/blob/master/routes/web.php) (Web routes), [`app/Http/Controllers/RoomController.php`](https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/RoomController.php) (Room workflow), [`app/Http/Controllers/VideoCallController.php`](https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/VideoCallController.php) (Call signaling), [`resources/js/app.js`](https://github.com/nersus15/kamscode-meet/blob/master/resources/js/app.js) (Vue application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Web entry"]
  node_http["Web routes<br/>[web.php]"]
  node_authroutes["Auth routes<br/>[auth.php]"]
  node_inertia["Inertia shell<br/>[app.blade.php]"]
end

subgraph group_identity["Identity and admin"]
  node_authcontrollers["Authentication"]
  node_sessioncontroller["Sessions"]
  node_profile["Profile management"]
  node_admin["User administration<br/>[UserController.php]"]
  node_users[("User records<br/>[User.php]")]
end

subgraph group_meetings["Rooms and calls"]
  node_roomscontroller["Room workflow<br/>[RoomController.php]"]
  node_roomrecords[("Rooms and participants<br/>[Room.php]")]
  node_participant[("Participant model<br/>[Participant.php]")]
  node_video["Call signaling"]
  node_signalevent["Video signal event"]
  node_leftevent["Room-leave event<br/>[UserLeftRoom.php]"]
  node_channels["Broadcast channels<br/>[channels.php]"]
end

subgraph group_client["Vue experience"]
  node_vueapp["Vue application<br/>[app.js]"]
  node_roompages["Room pages<br/>[Show.vue]"]
  node_callui["Video call UI<br/>[VideoCall.vue]"]
  node_echo["Realtime client<br/>[echo.js]"]
  node_authpages["Auth pages<br/>[Login.vue]"]
  node_adminpages["Admin pages<br/>[Index.vue]"]
end

node_visitor(("User / browser"))
node_reverb["Realtime broadcaster"]

node_visitor -->|"sends requests"| node_http
node_visitor -->|"auth requests"| node_authroutes
node_http -->|"dispatches"| node_roomscontroller
node_http -->|"dispatches"| node_video
node_http -->|"dispatches"| node_profile
node_http -->|"dispatches"| node_admin
node_authroutes -->|"dispatches"| node_authcontrollers
node_authroutes -->|"dispatches"| node_sessioncontroller
node_authcontrollers -->|"creates user"| node_users
node_sessioncontroller -->|"authenticates"| node_users
node_admin -->|"manages users"| node_users
node_profile -->|"updates profile"| node_users
node_roomscontroller -->|"reads and writes"| node_roomrecords
node_roomscontroller -->|"creates participant"| node_participant
node_video -->|"removes participant"| node_participant
node_video -->|"broadcasts signal"| node_signalevent
node_video -->|"broadcasts leave"| node_leftevent
node_signalevent -->|"broadcasts"| node_reverb
node_leftevent -->|"broadcasts"| node_reverb
node_channels -->|"defines channels"| node_reverb
node_roomscontroller -->|"renders pages"| node_inertia
node_authcontrollers -->|"renders pages"| node_inertia
node_inertia -->|"mounts"| node_vueapp
node_vueapp -->|"resolves page"| node_roompages
node_vueapp -->|"resolves page"| node_authpages
node_vueapp -->|"resolves page"| node_adminpages
node_roompages -.->|"uses component"| node_callui
node_callui -.->|"uses realtime client"| node_echo
node_echo -.->|"subscribes"| node_reverb

click node_http "https://github.com/nersus15/kamscode-meet/blob/master/routes/web.php"
click node_authroutes "https://github.com/nersus15/kamscode-meet/blob/master/routes/auth.php"
click node_inertia "https://github.com/nersus15/kamscode-meet/blob/master/resources/views/app.blade.php"
click node_authcontrollers "https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/Auth/RegisteredUserController.php"
click node_sessioncontroller "https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/Auth/AuthenticatedSessionController.php"
click node_profile "https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/ProfileController.php"
click node_admin "https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/Admin/UserController.php"
click node_users "https://github.com/nersus15/kamscode-meet/blob/master/app/Models/User.php"
click node_roomscontroller "https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/RoomController.php"
click node_roomrecords "https://github.com/nersus15/kamscode-meet/blob/master/app/Models/Room.php"
click node_participant "https://github.com/nersus15/kamscode-meet/blob/master/app/Models/Participant.php"
click node_video "https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/VideoCallController.php"
click node_signalevent "https://github.com/nersus15/kamscode-meet/blob/master/app/Events/VideoCallSignal.php"
click node_leftevent "https://github.com/nersus15/kamscode-meet/blob/master/app/Events/UserLeftRoom.php"
click node_channels "https://github.com/nersus15/kamscode-meet/blob/master/routes/channels.php"
click node_vueapp "https://github.com/nersus15/kamscode-meet/blob/master/resources/js/app.js"
click node_roompages "https://github.com/nersus15/kamscode-meet/blob/master/resources/js/Pages/Rooms/Show.vue"
click node_callui "https://github.com/nersus15/kamscode-meet/blob/master/resources/js/Components/VideoCall.vue"
click node_echo "https://github.com/nersus15/kamscode-meet/blob/master/resources/js/echo.js"
click node_authpages "https://github.com/nersus15/kamscode-meet/blob/master/resources/js/Pages/Auth/Login.vue"
click node_adminpages "https://github.com/nersus15/kamscode-meet/blob/master/resources/js/Pages/Admin/Users/Index.vue"

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_http,node_authroutes,node_inertia,node_visitor toneBlue
class node_authcontrollers,node_sessioncontroller,node_profile,node_admin,node_users toneAmber
class node_roomscontroller,node_roomrecords,node_participant,node_video,node_signalevent,node_leftevent,node_channels toneMint
class node_vueapp,node_roompages,node_callui,node_echo,node_authpages,node_adminpages toneRose
class node_reverb toneIndigo
```

## Components

### Web entry

- [Web routes](https://github.com/nersus15/kamscode-meet/blob/master/routes/web.php): `routes/web.php`
- [Auth routes](https://github.com/nersus15/kamscode-meet/blob/master/routes/auth.php): `routes/auth.php`
- [Inertia shell](https://github.com/nersus15/kamscode-meet/blob/master/resources/views/app.blade.php): `resources/views/app.blade.php`

### Identity and admin

- [Authentication](https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/Auth/RegisteredUserController.php): `app/Http/Controllers/Auth/RegisteredUserController.php`
- [Sessions](https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/Auth/AuthenticatedSessionController.php): `app/Http/Controllers/Auth/AuthenticatedSessionController.php`
- [Profile management](https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/ProfileController.php): `app/Http/Controllers/ProfileController.php`
- [User administration](https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/Admin/UserController.php): `app/Http/Controllers/Admin/UserController.php`
- [User records](https://github.com/nersus15/kamscode-meet/blob/master/app/Models/User.php): `app/Models/User.php`

### Rooms and calls

- [Room workflow](https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/RoomController.php): `app/Http/Controllers/RoomController.php`
- [Rooms and participants](https://github.com/nersus15/kamscode-meet/blob/master/app/Models/Room.php): `app/Models/Room.php`
- [Participant model](https://github.com/nersus15/kamscode-meet/blob/master/app/Models/Participant.php): `app/Models/Participant.php`
- [Call signaling](https://github.com/nersus15/kamscode-meet/blob/master/app/Http/Controllers/VideoCallController.php): `app/Http/Controllers/VideoCallController.php`
- [Video signal event](https://github.com/nersus15/kamscode-meet/blob/master/app/Events/VideoCallSignal.php): `app/Events/VideoCallSignal.php`
- [Room-leave event](https://github.com/nersus15/kamscode-meet/blob/master/app/Events/UserLeftRoom.php): `app/Events/UserLeftRoom.php`
- [Broadcast channels](https://github.com/nersus15/kamscode-meet/blob/master/routes/channels.php): `routes/channels.php`

### Vue experience

- [Vue application](https://github.com/nersus15/kamscode-meet/blob/master/resources/js/app.js): `resources/js/app.js`
- [Room pages](https://github.com/nersus15/kamscode-meet/blob/master/resources/js/Pages/Rooms/Show.vue): `resources/js/Pages/Rooms/Show.vue`
- [Video call UI](https://github.com/nersus15/kamscode-meet/blob/master/resources/js/Components/VideoCall.vue): `resources/js/Components/VideoCall.vue`
- [Realtime client](https://github.com/nersus15/kamscode-meet/blob/master/resources/js/echo.js): `resources/js/echo.js`
- [Auth pages](https://github.com/nersus15/kamscode-meet/blob/master/resources/js/Pages/Auth/Login.vue): `resources/js/Pages/Auth/Login.vue`
- [Admin pages](https://github.com/nersus15/kamscode-meet/blob/master/resources/js/Pages/Admin/Users/Index.vue): `resources/js/Pages/Admin/Users/Index.vue`

### Other components

- **User / browser**
- **Realtime broadcaster**

## Connections

- User / browser → Web routes: sends requests
- User / browser → Auth routes: auth requests
- Web routes → Room workflow: dispatches
- Web routes → Call signaling: dispatches
- Web routes → Profile management: dispatches
- Web routes → User administration: dispatches
- Auth routes → Authentication: dispatches
- Auth routes → Sessions: dispatches
- Authentication → User records: creates user
- Sessions → User records: authenticates
- User administration → User records: manages users
- Profile management → User records: updates profile
- Room workflow → Rooms and participants: reads and writes
- Room workflow → Participant model: creates participant
- Call signaling → Participant model: removes participant
- Call signaling → Video signal event: broadcasts signal
- Call signaling → Room-leave event: broadcasts leave
- Video signal event → Realtime broadcaster: broadcasts
- Room-leave event → Realtime broadcaster: broadcasts
- Broadcast channels → Realtime broadcaster: defines channels
- Room workflow → Inertia shell: renders pages
- Authentication → Inertia shell: renders pages
- Inertia shell → Vue application: mounts
- Vue application → Room pages: resolves page
- Vue application → Auth pages: resolves page
- Vue application → Admin pages: resolves page
- Room pages → Video call UI: uses component
- Video call UI → Realtime client: uses realtime client
- Realtime client → Realtime broadcaster: subscribes
