Inspiration
There have been several apps that are centered around real-time collaboration between several users, such as Quiplash (a party video game), and Kahoot (a game-based learning platform). These apps often start with one user creating an instance of the app, and others joining in using a randomly generated code. However, these apps only have their own purpose in mind, so that system is limited to their product. Hestia expands on this idea and spreads it across multiple web apps.
What it does
Named after the Greek goddess of the home, Hestia is a web service that allows developers to quickly setup multi-user and real-time web apps. It also acts a central hub for these apps, allowing users to access them easily. Hestia is centered around the idea of "rooms": groups of users that together access a web app simultaneously. These apps can be anything from multiplayer games, voice/video/text chat systems, drawing tools, text editors, and educational quizzes.
How I built it
Hestia is built with NodeJS, Socket.io, and ExpressJS to handle WebSockets and communication between client and server. Aside from those, Hestia doesn't rely on any other library or API; all the JavaScript is vanilla.
To insert custom code for the web apps, Hestia uses three features in (not yet standardized) Web Components: Custom Elements which package the web apps in HTML, HTML Templates which help setting up the last feature: Shadow DOM, which encapsulates the web apps' codes, separating Hestia from the web apps.
Challenges I ran into
One of the hardest parts about this project was finding a method to allow custom HTML, CSS, and JavaScript to be inserted into existing code, and being able to manipulate the injected script. Hestia doesn't use HTML iframes to achieve this, but instead works with new features in Web Components. I have never worked with these features before, so I had to learn while coding.
What's next for Hestia
Due to the nature of the service, Hestia will inject custom code and run it. This could lead Hestia prone to XSS attacks, running malicious code that others have written. In the future, Hestia should have better countermeasures to these attacks. Also, Hestia could be expanded into a fully fledged web service, allowing others to submit their web apps and have them hosted along with other apps.
Log in or sign up for Devpost to join the conversation.