io
io copied to clipboard
A Node.js based system for managing a stream, including a chat bot, overlays, stream note generation and more.
This repository has been deprecated and superseded by https://github.com/MichaelJolley/vulcan.
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!