An open API service indexing awesome lists of open source software.

https://github.com/algrvvv/go-sandbox

Песочница для запуска го кода прямо в браузере
https://github.com/algrvvv/go-sandbox

docker go go-playground golang sandbox

Last synced: 2 months ago
JSON representation

Песочница для запуска го кода прямо в браузере

Awesome Lists containing this project

README

        

# Go Sandbox

Go Sandbox - простая песочница для запуска кода го онлайн.
На данный момент есть два режима работы с кодом:
- сольный - вы работаете в одиночку
- совместный - вы можете совместно со своими друзьями писать код, наблюдая за его изменениями и выполнением в реальном времени

### Запуск

Для запуска песочницы вам нужен будет только докер.

Клонируем репозиторий:
```shell
git clone https://github.com/algrvvv/go-sandbox.git
cd go-sandbox
```

Запускаем команду для создания нужных волюмов и билдов:
```shell
make install
```

Либо делаем этот этап вручную:
```shell
docker volume create code-files
docker build -t go-runner ./executor
docker save -o go-runner.tar go-runner
docker build -t go-sandbox .
```

После этого мы можем запустить нашу песочницу:
```shell
make run
```

Либо командой:
```shell
docker run -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock -v code-files:/tmp/go-sandbox -v ./go-runner.tar:/go-runner.tar go-sandbox
```

### Использование

Чтобы работать вместе на начальном экране, нажмите `Online`, чтобы создать сессию а затем поделитесь ей
со своими друзями и творите!

Также присутствуют удобные сочетания клавиш такие как:
- `ctrl + shift + F` или `command + shift + F` для форматирования и автоматического импорта пакетов из стандартной библиотеки
- `ctrl + Enter` или `command + Enter` для запуска кода

### TODO

- [x] добавить удобный способ поделиться сессией
- [x] добавить отображение колва одновременно подключенных пользователей
- [x] добавить отслеживание сочетания клавиш для форматирования кода
- [x] добавить запуск кода для онлайн кодинга, также с использованием вебсокетов
- [ ] добавить использование `seccomp.json`
- [ ] добавить возможность сохранять файлы для дальнейшего их просмотра
- [ ] исправить баг, когда подключается новый пользователь к новой сессии - он не видит код, который писали до него. Если он решит что-то написать, сотрется предыдущий код у остальных.