• Title of the Project: Joint-Code: A real-time Code Collaboration and Execution Platform • Name of the Supervisor: Dr. Vishal Krishna Singh • Abstract: 1. 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 PPT’s and screen sharing, while this way is sufficient for theory lectures but it becomes really hard to cope up with online practicals. 2. Our solution for this is a platform that will allow us to have multiple users to join a single session where they can start creating files and coding in real-time. Each file can be modified by multiple users at the same time, and changes will be reflected to all the users and can be executed too. 3. This project implements a technique called "Operational Transformation" as an algorithm for automatic conflict resolution which proves to be quite helpful when handling real-time edits on a single file. 4. This particular project is a challenge for us because it combines various fields such as DevOps, Frontend, Backend and the implementation of this algorithm under one sinlge roof. • Learning Objectives: – Knowledge to Acquire: 1 1. Theory of Operational Transformation: Collaborative editing is a difficult task to solve from a development point of view because clients can be doing changes in the same parts of text at almost the same time. 2. Microservices: An architectural design for building a distributed application using containers. This architecture allows for each service to scale or update without disrupting other services in the application. 3. Knowledge of DevOps: A software development and operations approach that enables faster development of new products and easier maintenance of existing deployments. 4. Understanding of database management: The data storage, operations, and security practices in this project requires a level of knowledge on how to organize, store and retrieve data. 5. Linux Kernel: Containerization in Linux i.e. they share the same operating system kernel and isolate the application processes from the rest of the system. – Skills to Acquire: 1. Docker with DevOps: Through Docker DevOps, developers can pack all parts of an application like libraries and other dependencies easily and ship it out as a single package making it easy to create, deploy, and run the applications by using containers. 2. MongoDB, NodeJS: Backend languages for communication using websockets between the different users. The database keeps track of the user management and auth server. the database for OT server will be OrientDB as it is a great database for modelling data with complex relationships. 3. ReactJS: For providing a simple user friendly frontend we have chosen ReactJS and its ability to work with a virtual browser. 4. Traefik proxy: Traefik is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Traefik integrates with your existing infrastructure components and configures itself automatically and dynamically. – Competences to Acquire: 2 As mentioned in the knowledge and skills required to complete this project, we need a high competence of Backend languages like NodeJS, MongoDB, DevOps using Docker, Linux kernel commands and its containerization feature and various microservices ; an average competence of the OT algorithm, ReactJS for frontend ; and basic understanding for using Traefik for load balancing. – Attempting to solve any Research Problem?: Yes. We are implementing an algorithm called "Operational Transformations" which resolves conflicts in collaborative editing. – Overview of Research Problem/Project: 1. All students does not have same coding environment and some of them don’t even have Linux installed. 2. If the student want to share code or even if teacher wants to share a code, they need to send file which then needs to be run locally,hence consuming more time. 3. Debugging and doubt solving in a code is really cumbersome and teacher cannot help student in real-time. Poor network connection is the biggest hurdle of all due to which quality of share maybe bad and code may not be visible clearly. On our platform teacher will create a room, will share the invite link. After the room is created a Linux container will be created and all users will be able to access that Linux environment putting the students and the teacher in same coding environment. Now they can create files and start coding in real-time using our online code editor. Each file can be modified by multiple users at same time, and changes will be reflected to all the users using the algorithm Operational Transformation. • Signature of all the students along with the signature of their supervisor Sign of team members: Niharika Kabra (LIT2019053) 3 Sarthak Singh (LIT2019068) Adarsh Kumar (LIT2019051) Sign of Supervisor: Dr. Vishal Krishna Singh Dr. Deepshikha Agarwal Date: January 28, 2022 4