How nersus15/kamscode-meet-service works
This repository implements a room-based video-meeting backend: an HTTP API manages accounts and rooms, then issues short-lived join tokens; clients use those tokens to connect to a WebSocket signaling service and exchange media through an SFU. The API also provisions ICE/TURN settings, while the SFU manages participants, peer connections, media forwarding, chat, and participant state. The graph shows only relationships supported by the excerpts, SOURCE INDEX references, or explicit code wiring; several internal storage and SFU interactions are not fully sampled.
Main entry points: main.go API Service · handler.go WebSocket Signaling · auth.go Account Handlers · rooms.go Room Handlers
Components 25
HTTP API
- API Service
apps/api/main.go - HTTP Routing
internal/api/server.go - Account Handlers
internal/api/auth.go - Room Handlers
internal/api/rooms.go
Identity and Data
- User Store
internal/user/user.go - Session Store
internal/auth/session.go - Password Auth
internal/auth/password.go - Room Store
internal/room/room.go - PostgreSQL
internal/db/db.go - Join Tokens
internal/token/token.go - ICE and TURN
internal/turn/turn.go
Signaling and SFU
- SFU Service
apps/sfu/main.go - WebSocket Signaling
internal/signaling/handler.go - WebSocket Connection
internal/signaling/conn.go - Message Protocol
internal/protocol/message.go - SFU Server
internal/sfu/server.go - Live Rooms
internal/sfu/room.go - Participants
internal/sfu/participant.go
Media and Collaboration
- Peer Connections
internal/sfu/peer/peer.go - Publisher Peer
internal/sfu/peer/publisher.go - Subscriber Peer
internal/sfu/peer/subscriber.go - Media Tracks
internal/sfu/media.go - RTP Forwarding
internal/sfu/router/forwarder.go - Room Chat
internal/sfu/chat.go
Other components
- Meeting Client
Connections 33
- Meeting Client → HTTP Routing: uses API
internal/api/server.go - API Service → PostgreSQL: opens and migrates
apps/api/main.go - API Service → HTTP Routing: serves routes
apps/api/main.go - API Service → User Store: constructs
apps/api/main.go - API Service → Session Store: constructs
apps/api/main.go - API Service → Room Store: constructs
apps/api/main.go - API Service → Join Tokens: configures signer
apps/api/main.go - API Service → ICE and TURN: configures provider
apps/api/main.go - HTTP Routing → Account Handlers: routes auth
internal/api/server.go - HTTP Routing → Room Handlers: routes rooms
internal/api/server.go - Account Handlers → User Store: reads and creates users
internal/api/auth.go - Account Handlers → Password Auth: hashes and verifies
internal/api/auth.go - Account Handlers → Session Store: creates and deletes sessions
internal/api/auth.go - Room Handlers → Room Store: manages rooms
internal/api/rooms.go - Room Handlers → Join Tokens: signs join token
internal/api/rooms.go - Room Handlers → ICE and TURN: returns ICE servers
internal/api/rooms.go - Meeting Client → SFU Service: opens WebSocket
apps/sfu/main.go - SFU Service → WebSocket Signaling: routes /ws
apps/sfu/main.go - SFU Service → SFU Server: creates and closes
apps/sfu/main.go - SFU Service → ICE and TURN: loads ICE servers
apps/sfu/main.go - WebSocket Signaling → Join Tokens: verifies token
internal/signaling/handler.go - WebSocket Signaling → SFU Server: joins participants
internal/signaling/handler.go - WebSocket Signaling → Message Protocol: handles messages
internal/signaling/handler.go - WebSocket Signaling → Room Chat: dispatches chat
internal/signaling/handler.go - WebSocket Connection → Message Protocol: encodes and decodes
internal/signaling/conn.go - SFU Server → Live Rooms: creates and manages
internal/sfu/server.go - Live Rooms → Peer Connections: creates peer connections
internal/sfu/room.go - Participants → Peer Connections: selects peer by role
internal/sfu/participant.go - Live Rooms → RTP Forwarding: forwards tracks
internal/sfu/room.go - Media Tracks → RTP Forwarding: uses forwarder
internal/sfu/media.go - Live Rooms → Media Tracks: tracks published media
internal/sfu/room.go - Peer Connections → Publisher Peer: specialized implementation
- Peer Connections → Subscriber Peer: specialized implementation