Just curious what you are using for the backend with Java?
The backend is actually not too complex. Commands are processed from Twitch using PircBotX. Then, that and other data is vended through simple APIs created using SparkJava (http://sparkjava.com/).
It's effectively an API + Web server connected to by OBS Studio Browser instances.