This project was built for the International Federation of Touch. It provides an interface for orchestrating multiple concurrent live streaming team sport events on YouTube. It has been used across several day and multi-day Touch Football competitions.
- Required: Docker, Node 16+
cp sample-config.yaml config.yaml # and complete file
npm install # Install dependencies
npm run db # Run local mongo instance
./generate-google-api-tokens.js
npm run start -s # Run API
- Note: After periods of inactivity, you may need to refresh this key. Or your daily quota for the youtube v3 data api will reduce to 0 and you will have to create an entire new project.
- Note: You will need to create this app in test mode initially.
- Open up Google Cloud Console
- Create OAuth token and input client id and secret into config.yaml
- Run
node generate-google-api-token
and return input token. If no refresh token is output into google-tokens.json, please go to your associated Google account.
- See github.com/birdi/touch-stream-ui
- See deploy/readme.md for deploying Mongo & the API on a single Debian instance.
- See vultr
- Allow multiple competitions per instance
- Switch persistence layer to PostgreSQL
- Document API
- Dynamic config
- Youtube config
- Lock ui state midtransition
- Rename stream pending state (can't remember what this is?)
- Uniform dropdowns - use react-select across board
- Automatic transition retries
- Rate limit counter
- Start multiple
- Card 'timeslot' view
- Resource locking
- Group teams by comps, don't assume teams are nations
- Allow custom logos
- Bulk insertion of matches
- Bulk deletion of matches
- Variable stream keys
- User management
- Add Typescript
- Delete timeslot persistence layer (at most store in memory)
- SSH refresh unit
TBD
There is currently a +1hr modifier to the FIT sync code