master | vNext | Contributors |
---|---|---|
IO is a Twitch chat-bot, overlay & stream note micro-service application.
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 |
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 |
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.
See CHANGELOG.md
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):
This project follows the all-contributors specification. Contributions of any kind welcome!