We are planning to build a real-time code collaboration platform, which can be used as an educative aid while conducting online practical sessions.
PPT link: https://bit.ly/3mD7Aip
This pandemic has hit us hard, but with time everything is starting to come online so is the case with our colleges.
All lectures and CODING PRACTICALS are being conducted online, mostly through PPTs and screen sharing, while this way is OK'ish for theory lectures but it becomes really hard to coupe up with online PRACTICALS.
Some Caveats of the current way of online PRACTICAL sessions :
All the students do not have the same coding environment and some of them don't even have Linux installed.
If the student wants to share code or even if teacher wants to share a code, they need to send the file which then needs to be run locally, hence consuming more time.
Debugging and doubt solving in a code is really cumbersome and teacher cannot help student in realtime.
Poor network connection is the biggest hurdle of all due to which quality of share may be bad and code may not be visible clearly.
On our platform teacher will create a room, will share invite link.
After the room is created a linux container will be created and all users will be able to access that linux environment.
Students will join the room, which will put them and the teacher in the same coding environment.
Now they can create files and start coding in realtime using our online code editor, including syntax highlighting and all other features.
Each file can be modified by multiple users at the same time, and changes will be reflected to all the users. ( Google Doc like but with an IDE )
A dedicated terminal will be accessible to each user inside the same linux container.
Students and Teachers will be able to communicate with each other through text and voice chat.
As all communications will happen through websockets, therefore consuming less bandwidth than current online video sessions.
We built it using various web technologies along with cloud tech and DevOps.
We used Technologies like : React, Nodejs, Docker, Traefik, Digital Ocean
We have used dynamic reverse proxy for creating a room, it was a challenge for us and new topic to learn. Also every room a user creates leads to a docker container being spun up, so doing that was something we faced problems with.
We were able to complete it and finally host it, this was our biggest accomplishment.
We learned about time management and how to work as a team.
Also we learned new technologies like traefik, docker, github actions
We plan to integrate an Data science platform in our platform and also trying to integrate Kubernetes instead of Docker
We built it using VsCode and a lot of google meetings. We also used GitHub actions for CI-CD pipeline and Docker for containerizing the application