View Project
Finally completed my own collaborative WEB IDE. Inspired by Replit.com
Features:
Contarized Playground Execution using Docker
Real Time Multi User Cursor Tracker, and Chat using Socket-IO
Pseudao Terminal using Node-PTY and Xterm.
Code suggestion based on language using Monaco Editor
Persist project storage using Docker Volume.
MongoDB for persisting user and project data.
Challenges Faced:
Realtime multi cursor update in Monaco editor based on files and user viewing same file without any external library. Achieved this functionality using Monaco Decorations, Real time Socket-IO and effective use of React state and memoization.
Configuring Pseudo Terminal for project, unabling user to install libraries.
Executing Build projects from docker container to user.
Area To Improve:
Using proper Container Orchestration like Kubernetes instead of relaying on backend and Dockerode package. It will make it easier for exposing ports.
Executing project inside IDE page using iFrame instead of opening it in new Tab.
Built with