I took a class at Northeastern University called Software Development. My partner for that class and I had a really hard time pair-programming. We would either have to develop on his computer or we would have to develop on my computer. We tried current methods of live coding offered in the market but we found that none of those solutions were perfect. Some would only allow us to share single files at a time, some would lose connections while we were coding, while others would fail to even install. We were also using C++ and found that the difference in our coding environments often lead to separate results. As a result, we decided to develop an application where people can code live together through a website. The code would be stored and compiled on one server. The code would be pulled from git, modified in our environment, and the changes would then be pushed to git.

We fully developed this application and hosted it on www.codeopolis.tech. Moving forward, we are user testing this idea and hope to generate some revenue at some point. We use Docker containers throughout our whole project. Our main website has a Flask back-end Docker container. We store majority of our data a Mongo Database container. We use OAuth 2.0 to help users connect their Github, Gitlab, or Bitbucket accounts and pull repositories. When a user wants to start coding live, we start a new container for them. This container also has a Flask back-end but this time the Flask is configured to use Web sockets, a key feature to allow real-time client-server communication. We had to incorporate our own security measures in our application. We used the help of a Redis container to store temporary data for that. Finally, we have an Nginx reverse proxy configured with Lets-encrypt SSL certificates to be able to route traffic to the correct containers over a HTTPS connection.