During COVID-19, a lot of work can be done online and remotely. As a TA, I have often found myself looking for ways to mimic the whiteboard experience with code. I wanted to build something that I can fire off without hassle and start working with students.
Title inspiration: Academic Integrity is a serious issue and we all should strive to take it seriously. However, in the spirit of fun, Don't share my code pertains to the thumb rule of NEVER sharing your code, but we do :)
What it does
Don't Share My Code is a real-time online collaborative text editing software. It features a room-driven live editor with syntax support for JS and Python. It also features a chatbox for further collaboration and communication.
How I built it
I built it using Node.JS, Socket.io, MongoDB, AceEditor9, MaterializeUI
Challenges I ran into
The biggest challenge for me was configuring the socket server for real-time communication. Without using a state management system for overhead, I decided to use web sockets to communicate every piece of information across the clients. I also had issues configuring ace editor to work with socket.io.
The web-app also has some inconsistencies with maintaining sessions. On the Heroku server, it seems like socket clients don't immediately connect unlike they when running locally. This is an issue that I will dive into deeper. The workaround for this is to refresh the clients and monitor if they have connected.
Accomplishments that I'm proud of
I'm proud to have driven this project solo and being able to figure out most issues by myself. It is hard attending a hackathon virtually as it takes away from the experience and convenience of being under one roof.
What I learned
I have learned a lot about web socket servers and how they communicate across clients and servers. I also learned how important teamwork is. Solo projects are fun but can prove to be extremely difficult during the time pressure of a hackathon. Going forward I will always find a team and work together to achieve even greater goals in a short time
What's next for Don't Share My Code
To integrate user logins and sign-ups, maintain histories of rooms, and user invitations via email. I also need to further investigate the socket throttle occurring through Heroku. I shall use it in production with my classes next semester once I debug and polish the app.