/io

A Node.js based system for managing a stream, including a chat bot, overlays, stream note generation and more.

Primary LanguageTypeScriptMIT LicenseMIT

master vNext Contributors
Build Status Build Status All Contributors

IO is a Twitch chat-bot, overlay & stream note micro-service application.

Services

All services use Node.js & TypeScript unless otherwise noted.

Service Description
admin Web portal for administering entire system. (Under construction)
api Express API used as a proxy between third-party API's and the IO system
chat Connects to Twitch chat via IRC and emits various events to the io-hub service
chron Executes various functions at timed intervals to update other services
hub A Socket.io hub that listens and emits events for the application
logger Listens to events emitted from the io-hub and logs to a MongoDB
overlay Web pages served by Express that listen to events from the io-hub and render UIs to be displayed on stream
shared Contains interfaces, classes and data access logic used by other services
streamnotes Listens for certain events emitted from the io-hub to generate stream notes for a completed stream and push to GitHub
user Express web app that acts as a stateful service for all user (viewer) data used by the application
webhooks Express web app that listens for calls from third-parties and relays events to the io-hub

Environment Variables

When running locally, environment variables can be added to each service via a .env file in the services root directory. An example (.env-example) lives in the root of the repository. Below is a description of all environment variables and their use.

Variable Purpose
GITHUB_USERNAME Username to use in building the GitHub repo url.
GITHUB_EMAIL_ADDRESS Email address associated with the commit to git.
GITHUB_NAME Name of the user associated with the commit to git.
GITHUB_AUTH_TOKEN Personal access token from GitHub. Used to authenticate when generating stream notes.
GITHUB_REPO GitHub repository name to commit stream notes to.
MONGO_DB_CONN_STRING Connection string for MongoDB that will store stream, user & vote data
MONGO_DB_USER Username for MongoDB connection
MONGO_DB_PASSWORD Password for MongoDB connection
MONGO_DB_DATABASE Database that contains the stream, user & vote data
NGROK_AUTH_TOKEN Used by webhooks service when running the application locally.
TWITCH_CLIENT_ID Client Id assigned to an application by Twitch at https://dev.twitch.tv
TWITCH_CLIENT_TOKEN Auth token for the streamer's Twitch account
TWITCH_CLIENT_USERNAME Twitch login for the streamer
TWITCH_CLIENT_USER_ID Twitch user id of the streamer
TWITCH_BOT_USERNAME Twitch login for the bot. Can be the same as TWITCH_CLIENT_USERNAME.
TWITCH_BOT_TOKEN Twitch Auth token for the bot account. Can be same as TWITCH_CLIENT_TOKEN

Release Notes

See CHANGELOG.md

Contributing

Want to contribute? Check out our Code of Conduct and Contributing docs. This project follows the all-contributors specification. Contributions of any kind welcome!

Thanks goes to these wonderful people (emoji key):

Anthony Conrad
Anthony Conrad

πŸ€” πŸ’» πŸš‡
Sushinateur
Sushinateur

πŸ€”
Martin Raymond
Martin Raymond

πŸ€” πŸ’» πŸš‡
David Poindexter
David Poindexter

πŸš‡ πŸ€”
Michael Jolley
Michael Jolley

πŸ€” πŸ’» πŸš‡ πŸ“–
AndrΓ©s AmarΓ­s
AndrΓ©s AmarΓ­s

πŸ’»
Chris Jones
Chris Jones

πŸ€”
Flyken
Flyken

πŸ€”
Davin Davies
Davin Davies

πŸ€”
CodemanCodes
CodemanCodes

πŸ€” πŸ““ πŸ’»
John Tsombakos
John Tsombakos

⚠️
Chance Murray
Chance Murray

πŸ’»
ElectricHavoc
ElectricHavoc

πŸ’»
Jonathan Delfraisse
Jonathan Delfraisse

⚠️
bravecobra
bravecobra

πŸ€”
Ancient Coder
Ancient Coder

πŸ€”
deathpax
deathpax

πŸ€”
R.James Solenberg
R.James Solenberg

πŸ€”

This project follows the all-contributors specification. Contributions of any kind welcome!