Skip to content
/ io Public
forked from michaeljolley/io

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

License

Notifications You must be signed in to change notification settings

Beachcasts/io

 
 

Repository files navigation

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

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

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

🤔
Brian Clark
Brian Clark

🖋
Mike Holloway
Mike Holloway

🤔 💻
Chris Gargotta
Chris Gargotta

💻 🤔
Hugo Dahl
Hugo Dahl

🤔
Timmy Kokke
Timmy Kokke

🖋
Adam Culp
Adam Culp

🤔
Simon Brookes
Simon Brookes

🤔

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

About

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

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 71.2%
  • JavaScript 13.8%
  • Dockerfile 6.8%
  • HTML 4.3%
  • CSS 3.9%