Chirp is a website where gamers can stream their content for others to watch and chat with people. Here's a preview of Chirp:
To build Chirp locally, you'll need to have Docker Compose installed on your system.
- Clone this repository
- In the project root, run
make buildandrun
, ordocker-compose --build up
- Open up a browser and visit http://localhost:80
- Make an account by signing up
- Login to the account.
- Download OBS https://obsproject.com/
- Go to settings in OBS and go to the stream tab
- Set Service to Custom..., Server to rtmp://localhost/live, and set the stream key to the one given in the dashboard after logging in
- Press start stream and you should be able to see your stream running on the web app on the browse tab!
The frontend for Chirp is written in React, and the static build files are served by NGINX. Chirp uses Express.js as an API backend. The livestream video data is sent to our Node Media Server instance, which handles the RTMP stream and transcodes it to the MPEG-DASH format using FFmpeg for the frontend to consume. The chat is built using Socket IO.
We use Docker Compose to break these up into 4 microservices; frontend, backend, media server, and chat. The frontend is served by an NGINX server , and it reverse proxies specific requests to the backend server, media server, and chat server.