Giter VIP home page Giter VIP logo

gollab's Introduction

Gollab

Gollab is an online collaborative code editor inspired by the original Go Playground. The goal is to enable users to create a room with ease and work on code like how the Go playground would be used.

UNSTABLE Current demo can be found at http://18.188.191.0/

Algorithm for the CRDT can be found here

Technologies required

  1. Golang
  2. React
  3. gRPC

Setting up the application

Installing dependencies for React

cd webapp/
yarn install

Running the application locally

make run # Runs the backend service
make webrun # Runs the frontend

Currently, two separate terminals are required to run the application.

React supports hot reloading and thus, changes made in the webapp folder will be updated automatically.

The Go backend currently does not have such functionalities and you would have to shut down the server and run make run again.

Docker

There is a docker image I am currently using to run the application on AWS EC2. You can find it at https://hub.docker.com/repository/docker/tankangliang/gollab

This helps to speed up the deployment process but I/O operations are really slow, causing a huge delay in running the file.

Run the following commands to view it locally

docker pull tankangliang/gollab:latest
docker run --rm -p 3000:3000 -p 8080:8080 tankangliang/gollab:latest --app=3000

The web application will be available at localhost:3000 and the backend at port 8080.

Todo

  • Ability to run the file
  • Display for file execution output
  • Disconnect client when pages closes
  • Syncs up users on first load
  • Handling tabs
  • Handling multiple key presses like copy paste

Possible Improvements

  1. Deploy without Docker and compare speed performances
  2. Rewrite of application without React
  3. Using websockets instead of gRPC

gollab's People

Contributors

tankangliang avatar findtravishere avatar dependabot[bot] avatar

Stargazers

 avatar Tamás Gulácsi avatar Fedor Lapshin avatar Arthur A. Bergamaschi avatar Child Wang World avatar dkkv0000 avatar tokyoliyi avatar Xu avatar Carlos Eduardo Fernández avatar Jonas mg avatar Yueping Qian avatar  avatar Rajendrasinh Parmar avatar

Watchers

Xu avatar  avatar

gollab's Issues

Multiple users cannot type at the same time

On receiving a message, the app refocuses the cursor to the last position that the new message was added to, making it impossible to edit on multiple lines at the same time

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.