/io

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

Primary LanguageTypeScriptMIT LicenseMIT

This repository has been deprecated and superseded by https://github.com/MichaelJolley/vulcan.

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

Custom Comic Chat Avatars

One of the fun capabilities of IO is a reproduction of Microsoft Comic Chat from the late 90's. We welcome anyone to submit a pull request with a custom avatar for their Twitch account.

The requirements for an avatar are pretty specific. You need two images: head-{twitchHandle}.png & body-{twitchHandle}.png. Both should be transparent PNGs.

We've created a place to test your images at codesandbox. You can reach it at https://codesandbox.io/s/quizzical-mendeleev-0gwnq. Follow the instructions there to get your body & head images just right and then submit a pull request adding them to the /assets/images/characters/{your twitch handle} path.

Release Notes

See CHANGELOG.md

Contributors

Thanks goes to these wonderful people:


Anthony Conrad

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

Sushinateur

πŸ€”

Martin Raymond

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

David Poindexter

πŸš‡ πŸ€”

Michael Jolley

πŸ€” πŸ’» πŸš‡ πŸ“–

AndrΓ©s AmarΓ­s

πŸ’»

Chris Jones

πŸ€” πŸ’»

Flyken

πŸ€”

Davin Davies

πŸ€”

CodemanCodes

πŸ€” πŸ““ πŸ’»

John Tsombakos

⚠️

Chance Murray

πŸ’»

ElectricHavoc

πŸ’»

Jonathan Delfraisse

⚠️

bravecobra

πŸ€”

Ancient Coder

πŸ€”

deathpax

πŸ€”

R.James Solenberg

πŸ€” πŸ–‹

Brian Clark

πŸ–‹

Mike Holloway

πŸ€” πŸ’»

Chris Gargotta

πŸ’» πŸ€”

Hugo Dahl

πŸ€”

Timmy Kokke

πŸ–‹

Adam Culp

πŸ€”

Simon Brookes

πŸ€”

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