Free and Open-source video streaming suite. https://miracle-tv.live
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Dale bd57551557 Merge pull request 'style: lint staged files' (#11) from style/lint-staged into develop 2 months ago
module-releases misc: New module release 2 months ago
public feat: File upload, front 3 months ago
src misc: Design touches 2 months ago
.dockerignore feat: docker 2 months ago
.env.development feat: File upload, front 3 months ago
.env.docker feat: docker 2 months ago
.env.local feat: User form refactor + Working user form, image uploader, user info 3 months ago
.env.production feat: File upload, front 3 months ago
.gitignore misc: Format gitignore 2 months ago
.prettierignore feat: Added prettier 5 months ago
.prettierrc.json feat: Added prettier 5 months ago
README.md feat: docker 2 months ago
backend.Dockerfile fix: Build client in dockerfile 2 months ago
codegen.yml feat: File upload, front 3 months ago
default.nix misc: Bump version 2 months ago
docker-compose.yml feat: docker 2 months ago
docker.miracle-tv.json feat: docker 2 months ago
frontend.Dockerfile feat: check stream key 2 months ago
graphql.schema.json feat: Add @auth directive to graphql 2 months ago
module.nix feat: User profile settings (again) 2 months ago
next-env.d.ts fix: Update apollo, regenerate package.json 2 months ago
next-production.config.js feat: File upload, front 3 months ago
next.config.js feat: User profile settings (again) 2 months ago
nginx.conf.template fix: copy the rest of the ffmpeg setup 2 months ago
package.json style: lint staged files 2 months ago
tsconfig.json feat: File upload, front 3 months ago
yarn.lock style: lint staged files 2 months ago

README.md

MiracleTV

A Streaming Suite

Server part of MiracleTV Suite

Support Server

Running requirements

  • NodeJS 14>
  • Yarn
  • RethinkDB 2.4.1>

Development Requirements

  • Nix (Strongly encouraged, but optional)
  • NodeJS 14>
  • Yarn
  • RethinkDB 2.4.1>

Building and running

Non-nix

  • yarn
  • ./bin/build.sh
  • nodejs -r ts-node/register/transpile-only -r tsconfig-paths/register dist/server.js

Nix

  • nix-env -f default.nix
  • miracle-tv

Development

Non-nix

  • yarn
  • yarn dev

Nix

  • nix-shell
  • yarn-dev

GraphQL schemas, resolvers and mutations can be found in src/graphql. GraphiQL for testing is available over at http://localhost:4000/graphql for testing.

Before commit

Before commiting, if you have altered packages installed for the project, please regenerate nix/yarn.nix using yarn2nix and copy package.json and yarn.lock to /nix folder as well. This is to make sure changes to the code and not the dependecies do not trigger extra rebuilds. If you don't use nix, please reach out to somebody who can do that for you.

Deploying in Production with nix

! Software does not include migrations and is definetely not production ready, deploy at your own risk !

Download one of our module-releases files and import it in your configuration.nix, and then configure it like so

sudo wget https://code.gensokyo.social/Gensokyo.social/miracle-tv/raw/branch/develop/module-releases/0-1-0-2.nix -P /etc/nixos/miracle-module.nix
# configuration.nix
{
    imports = [
        # ... your other imports
        ./miracle-module.nix
    ];

    # ... your configration.nix

    services.miracle-tv = {
        enable = true;
        settings = {
            name = "My MiracleTV instance";
            server = {
                port = "8080";
            };
        };
    };
}
  • (Optionally) proxy pass http://localhost:4000 via web server of your choice. GraphQL Playground will be available at ${yourdomain}/graphql.

nixos-rebuild switch should download and compile everything. Look for full list of options inside the module file.

Docker setup

A docker-compose.yml file is provided for those who would prefer to use Docker. If you've got a working Docker setup, all you need to do is run:

$ docker-compose up

and it should be ready to go after building. This is largely intended for development purposes, but all that's stopping this flow from being production-ready is the ability to add a custom config.