Code structure - 100mslive/100ms-web GitHub Wiki
Table of Contents
This section explains the project structure and discusses a bit about how we have organized the code of the 100ms-web app.
Directory Structure
.
├── common
├── components
│ ├── AppData
│ ├── Chat
│ ├── Connection
│ ├── Footer
│ ├── Header
│ ├── Hooks
│ ├── Input
│ ├── MoreSettings
│ ├── Notifications
│ ├── PIP
│ ├── Playlist
│ ├── Preview
│ ├── Settings
│ ├── Streaming
│ ├── Toast
│ ├── hooks
│ └── init
├── controllers
│ └── hls
├── images
├── layouts
├── plugins
│ ├── VirtualBackground
│ ├── transcription
│ └── whiteboard
├── primitives
└── services
Details
This section explains each directory briefly.
Common
Contains some commonly used util functions, hooks and list all the constants used by the application.
Components
The heart of the application. Contains every component used in the app. A brief information on each of them is given below
-
AppData
- This folder contains some hooks and helper functions that uses 100ms SDK's Store AppData. You can use them or build over this for your custom needs.
Directory | Details |
---|---|
Chat | The chat component you see on the right side of your screen in the 100ms web app. |
Content Cell | Content Cell |
Connection | The tiny connection symbol on the top right of the videoTile. Lets you visualize the peer's connection. |
Footer | The footer component. Contains two different footers for Conference and Streaming |
Header | The header component. Everything you see on the top of the page. (e.g) Participant list, Streaming Actions etc. |
Hooks | Some helper hooks. |
Input | This contains a small KeyboardInputManager which handles the shortcuts. Currently it has audio/video toggles and could be expanded to suit you needs. Use this Manager if you want to include more shortcuts. |
MoreSettings | This component is the one that is shown when we press the three dot more settings button |
Notifications | Component that shows the notification on the left bottom of the screen |
PIP | Handles all the Picture in Picture of peer videos |
Playlist | Video playlist(For watch party). |
Preview | The preview component which is displayed when you join the room. This is the page where we enter our name and check our video/audio preview |
Settings | The settings modal component that contains the device settings, notification settings etc. |
Streaming | Streaming component that contains UI workflow to start a stream. |
Toast | Component for showing toast messages |
Controllers(hls)
This directory contains the HLS controller. This is a thin wrapper over HlsJs and handle things like parsing HLS Metadata.
Images
Contains the images needed for the webapp like logo, errorpage background etc.
Layouts
This contains components that define the different layout of webapp. (i.e) ActiveSpeakerView, HLSView, mainView etc. These views are selected based on role and other parameters by the MainView.
plugins
This directory contains plugins that imrpove the 100ms-web experience with some important tools like
- VirtualBackground
- Transcription
- whiteboard
services
Contains few services like feature flags and token handling.