Anapher / Strive

Open source video conferencing platform
https://www.openstrive.org
Apache License 2.0
207 stars 52 forks source link

ASP.NET Core Cypress codecov Maintainability License: Apache 2.0


Strive

Open source video conference system

View Demo · Report Bug · Request Feature

Preview image

Table of content

This is a very new project and I'm very thankful for all kinds of contributions including

About The Project

Last year when I was tutor at my university, I had to use BigBlueButton which was a very frustrating experience. I wondered how hard it can be to create a video conference system and that's how Strive was started. You can find a list with issues of BBB I wanted to address here.

Features

Architecture

Architecture

WebSPA

The frontend, written with React/TypeScript. Basically everything you see.

Identity Microservice

Manages the authentication process. This is basically an OpenID Connect server that provides the frontend for the login aswell as managing the access/refresh tokens.

Selective Forwarding Unit (SFU)

Redirects the media traffic (audio/video) between the participants.

Conference Management

This is the heart of Strive, here are conferences created, chat messages delivered, rooms created etc.

Preview

https://user-images.githubusercontent.com/7737876/154677692-506e50aa-6b58-4ab7-bd32-628d447b4aa8.mp4

Getting Started

Running on localhost with Docker Compose and Traefik

  1. Clone the repo

    git clone https://github.com/Anapher/Strive.git
  2. Got to src directory

    cd src/
  3. Execute docker compose using the script

    • On Windows, execute
      ./compose.ps1 up --build
    • On Linux, execute
      chmod +x ./compose.sh && ./compose.sh up --build
  4. Go to https://localhost using your favorite browser. Please note that you may have to trust the self signed certificate for localhost. If you are using Google Chrome, you can simply enable this option chrome://flags/#allow-insecure-localhost (just paste it in the address bar)

In the .env file you can change some parameters, but they are already preconfigured for local testing.

Running on production server

Please refer to the installation instructions.

Development

For developing, you likely want to focus on one microservice only. First of all, you need to setup the infrastructure, namely a RabbitMQ server (with delayed message exchange plugin) and a MongoDB database, both running on default ports. The easiest way to do so is by executing

   docker-compose -f docker-compose.yml -f docker-compose.override.yml up nosqldata rabbitmq

Then you need to start the required microservices you do NOT want to modify:

Known Issues

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the Apache-2.0 License. See LICENSE for more information.

Acknowledgements