Project started as a local Twitch Bot, but little by little it has grown in some kind of all-in-one solution. Other than Chat Bot, it has features like Widgets, StreamDeck-like virtual panel and even Virtual Camera, if you want to use your smartphone as a webcam.

This is a “Work In Progress” as of now, so I’ll write about it in more details soonTM.

For the server side I used Node and Express, and for database SQLite3 and Prisma as ORM.

One one hand I wanted the stack to be like all-in-one pack, so it could be easily installed with a single npm install command. Streamers more often than not are quite tech-savvy, but that doesn’t mean that we should expect developer or dev-ops level of skills from them. So I didn’t want any out-of-the-ecosystem dependencies like Postgres or MySQL. More different third-party installs = more additional configuration = more things can go wrong. Let’s keep it as simple as we can, but not simpler.

On the other hand I wanted something more resilient and performant than simple JSON files to store everything from rarely updated options to instantly processed chat messages if need be. So, I think that this stack is a good balance between complexity and functionality/performance.

For the client-server communication I didn’t want to write REST endpoint for every little thing, so I decided to go with GraphQL. Not only User Experience matters, but Developer Experience also matters, you know :)