Skip to content

Commit

Permalink
Merge branch 'GRVYDEV:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
SpoopyTim authored Apr 18, 2022
2 parents d912c10 + c6d63cb commit 2f5cd31
Show file tree
Hide file tree
Showing 71 changed files with 40,391 additions and 10 deletions.
41 changes: 41 additions & 0 deletions .github/workflows/ingest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Ingest Lint

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
lint:
name: CI
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./ingest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Add clippy
run: rustup component add clippy
- name: Add rustfmt
run: rustup component add rustfmt
- name: Check
uses: actions-rs/cargo@v1
with:
args: --manifest-path ./ingest/Cargo.toml
command: check
- name: Fmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all --manifest-path ./ingest/Cargo.toml -- --check
- name: Clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --manifest-path ./ingest/Cargo.toml -- -D warnings -A clippy::needless_return -A clippy::upper-case-acronyms
22 changes: 22 additions & 0 deletions .github/workflows/webrtc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Webrtc Build

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./webrtc
steps:
- uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.15
- name: Build
run: go build -v ./...
8 changes: 4 additions & 4 deletions contrib/ubuntu_installer/ubuntu_installer.sh
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ EOF
[Unit]
Description=Project Lightspeed ingest service
After=network-online.target
Wants=network-online.target
[Service]
TimeoutStartSec=0
Environment=LS_INGEST_ADDR=${IP_ADDRESS}
Expand All @@ -136,7 +136,7 @@ Restart=always
RestartSec=60
[Install]
WantedBy=network-online.target
WantedBy=multi-user.target
EOF

## Create systemd service for webrtc:
Expand All @@ -145,7 +145,7 @@ EOF
[Unit]
Description=Project Lightspeed webrtc service
After=network-online.target
Wants=network-online.target
[Service]
TimeoutStartSec=0
Environment=IP_ADDRESS=${WEBRTC_IP_ADDRESS}
Expand All @@ -154,7 +154,7 @@ Restart=always
RestartSec=60
[Install]
WantedBy=network-online.target
WantedBy=multi-user.target
EOF

## Install and start services:
Expand Down
12 changes: 6 additions & 6 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ services:
lightspeed-ingest:
container_name: lightspeed-ingest
image: projectlightspeed/ingest
# #Uncomment below to build locally
#Uncomment below to build locally
# image: lightspeed-ingest
# build:
# context: ../Lightspeed-ingest
# context: ./ingest
# dockerfile: Dockerfile
env_file: '.env'
restart: on-failure
Expand All @@ -17,10 +17,10 @@ services:
lightspeed-react:
container_name: lightspeed-react
image: projectlightspeed/react
# #Uncomment below to build locally
#Uncomment below to build locally
# image: lightspeed-react
# build:
# context: ../Lightspeed-react
# context: ./react
# dockerfile: Dockerfile
env_file: '.env'
restart: on-failure
Expand All @@ -30,10 +30,10 @@ services:
lightspeed-webrtc:
container_name: lightspeed-webrtc
image: projectlightspeed/webrtc
# #Uncomment below to build locally
#Uncomment below to build locally
# image: lightspeed-webrtc
# build:
# context: ../Lightspeed-webrtc
# context: ./webrtc
# dockerfile: Dockerfile
env_file: '.env'
command: ["lightspeed-webrtc", "--addr=0.0.0.0", "--ip=${WEBSOCKET_HOST}", "--ports=20000-20100", "run"]
Expand Down
6 changes: 6 additions & 0 deletions frontend/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.git
.dockerignore
.gitignore
Dockerfile
README.md
LICENSE
20 changes: 20 additions & 0 deletions frontend/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"env": {
"browser": true,
"es2021": true
},
//"extends": ["eslint:recommended", "plugin:react/recommended"],
"extends": ["plugin:react/recommended"],
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 12,
"sourceType": "module"
},
"plugins": ["react"],
"rules": {
"react/jsx-uses-react": "error",
"react/jsx-uses-vars": "error"
}
}
5 changes: 5 additions & 0 deletions frontend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/node_modules/
.idea/
.DS_Store
.eslintcache
/build/
19 changes: 19 additions & 0 deletions frontend/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
ARG ALPINE_VERSION=3.12
ARG NODE_VERSION=15
ARG NGINX_VERSION=1.19.6

FROM node:${NODE_VERSION}-alpine${ALPINE_VERSION} AS builder
WORKDIR /app/Lightspeed-react
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build


FROM nginx:${NGINX_VERSION}-alpine
ENV WEBSOCKET_HOST=localhost
ENV WEBSOCKET_PORT=8080
EXPOSE 80/tcp
COPY --chown=1000 docker/entrypoint.sh /docker-entrypoint.d/entrypoint.sh
COPY --chown=1000 docker/config.json.template /config.json.template
COPY --from=builder --chown=1000 /app/Lightspeed-react/build /usr/share/nginx/html
184 changes: 184 additions & 0 deletions frontend/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
<p align="center">
<a href="https://github.com/GRVYDEV/Lightspeed-react">
<img src="images/lightspeedlogo.svg" alt="Logo" width="150" height="150">
</a>
</p>
<h1 align="center">Project Lightspeed React</h1>
<div align="center">
<a href="https://github.com/GRVYDEV/Lightspeed-react/stargazers"><img src="https://img.shields.io/github/stars/GRVYDEV/Lightspeed-react" alt="Stars Badge"/></a>
<a href="https://github.com/GRVYDEV/Lightspeed-react/network/members"><img src="https://img.shields.io/github/forks/GRVYDEV/Lightspeed-react" alt="Forks Badge"/></a>
<a href="https://github.com/GRVYDEV/Lightspeed-react/pulls"><img src="https://img.shields.io/github/issues-pr/GRVYDEV/Lightspeed-react" alt="Pull Requests Badge"/></a>
<a href="https://github.com/GRVYDEV/Lightspeed-react/issues"><img src="https://img.shields.io/github/issues/GRVYDEV/Lightspeed-react" alt="Issues Badge"/></a>
<a href="https://github.com/GRVYDEV/Lightspeed-react/graphs/contributors"><img alt="GitHub contributors" src="https://img.shields.io/github/contributors/GRVYDEV/Lightspeed-react?color=2b9348"></a>
<a href="https://github.com/GRVYDEV/Lightspeed-react/blob/master/LICENSE"><img src="https://img.shields.io/github/license/GRVYDEV/Lightspeed-react?color=2b9348" alt="License Badge"/></a>
</div>
<br />
<p align="center">
<p align="center">
A React website that connects to Lightspeed WebRTC via a websocket to negotiate SDPs and display a WebRTC stream.
<!-- <br /> -->
<!-- <a href="https://github.com/GRVYDEV/Lightspeed-react"><strong>Explore the docs »</strong></a> -->
<br />
<br />
<a href="https://youtu.be/Dzin4_A8RDs">View Demo</a>
·
<a href="https://github.com/GRVYDEV/Lightspeed-react/issues">Report Bug</a>
·
<a href="https://github.com/GRVYDEV/Lightspeed-react/issues">Request Feature</a>
</p>
</p>

<!-- TABLE OF CONTENTS -->
<details open="open">
<summary><h2 style="display: inline-block">Table of Contents</h2></summary>
<ol>
<li>
<a href="#about-the-project">About The Project</a>
<ul>
<li><a href="#built-with">Built With</a></li>
</ul>
</li>
<li>
<a href="#getting-started">Getting Started</a>
<ul>
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#installation">Installation</a></li>
</ul>
</li>
<li><a href="#usage">Usage</a></li>
<li><a href="#roadmap">Roadmap</a></li>
<li><a href="#contributing">Contributing</a></li>
<li><a href="#license">License</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#acknowledgements">Acknowledgements</a></li>
</ol>
</details>

<!-- ABOUT THE PROJECT -->

## About The Project

<!-- [![Product Name Screen Shot][product-screenshot]](https://example.com) -->

This is one of three components required for Project Lightspeed. Project Lightspeed is a fully self contained live streaming server. With this you will be able to deploy your own sub-second latency live streaming platform. This particular repository connects via websocket to Lightspeed WebRTC and displays a WebRTC stream. In order for this to work the Project Lightspeed WebRTC and Project Lightspeed Ingest are required.

### Built With

- React

### Dependencies

- [Lightspeed WebRTC](https://github.com/GRVYDEV/Lightspeed-webrtc)
- [Lightspeed Ingest](https://github.com/GRVYDEV/Lightspeed-ingest)

<!-- GETTING STARTED -->

## Getting Started

## Setup

### Docker

1. Install [git](https://git-scm.com/downloads)
1. Build the image from the master branch with:

```sh
docker build -t grvydev/lightspeed-react https://github.com/GRVYDEV/Lightspeed-react.git
```

1. Run it with

```sh
docker run -it --rm \
-p 8000:80/tcp \
-e WEBSOCKET_HOST=localhost \
-e WEBSOCKET_PORT=8080 \
grvydev/lightspeed-react
```

Where your websocket host from the browser/client perspective is accessible on `localhost:8080`.

1. You can now access it at [localhost:8000](http://localhost:8000).

### Locally

To get a local copy up and running follow these simple steps.

#### Prerequisites

In order to run this npm is required. Installation instructions can be found <a href="https://www.rust-lang.org/tools/https://www.npmjs.com/get-npm">here</a>. Npm Serve is required as well if you want to host this on your machine. That can be found <a href="https://www.npmjs.com/package/serve">here</a>

#### Installation

```sh
git clone https://github.com/GRVYDEV/Lightspeed-react.git
cd Lightspeed-react
npm install
```

<!-- USAGE EXAMPLES -->

#### Usage

First build the frontend

```sh
cd Lightspeed-react
npm run build
```

You should then configure the websocket URL in `config.json` in the `build` directory.

Now you can host the static site locally, by using `serve` for example

```sh
serve -s build -l 80
```

This will serve the build folder on port 80 of your machine meaning it can be retrieved via a browser by either going to your machines public IP or hostname

<!-- _For more examples, please refer to the [Documentation](https://example.com)_ -->

<!-- ROADMAP -->

## Roadmap

See the [open issues](https://github.com/GRVYDEV/Lightspeed-react/issues) for a list of proposed features (and known issues).

<!-- CONTRIBUTING -->

## 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 -->

## License

Distributed under the MIT License. See `LICENSE` for more information.

<!-- CONTACT -->

## Contact

Garrett Graves - [@grvydev](https://twitter.com/grvydev)

Project Link: [https://github.com/GRVYDEV/Lightspeed-react](https://github.com/GRVYDEV/Lightspeed-react)

<!-- ACKNOWLEDGEMENTS -->

## Acknowledgements

- [Sean Dubois](https://github.com/Sean-Der)


<!-- MARKDOWN LINKS & IMAGES -->
<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->


3 changes: 3 additions & 0 deletions frontend/docker/config.json.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"wsUrl": "ws://${WEBSOCKET_HOST}:${WEBSOCKET_PORT}/websocket"
}
3 changes: 3 additions & 0 deletions frontend/docker/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/sh

envsubst < /config.json.template > "/usr/share/nginx/html/config.json"
1 change: 1 addition & 0 deletions frontend/images/lightspeedlogo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 2f5cd31

Please sign in to comment.