← Все проекты
PythonFastAPIWebSocketCodeMirrorJinja2Docker

Инструмент для технических интервью и парного программирования. Сделал его, потому что разбирать с человеком задачу в расшаренном блокноте неудобно обоим: подсветки нет, условие мешается с решением, а забрать по итогу нечего.

Ячейки — главная идея. Сессия это не один сплошной файл, а набор независимых блоков: у каждого свой язык и своё название. На интервью это выглядит так: в первой ячейке markdown с условием и тестовыми данными, во второй — решение на SQL, в третьей — то же самое на Python. Ничего не перемешивается, ячейки можно переставлять и удалять.

Правки видны сразу. Всё держится на WebSocket: до четырёх участников в сессии, изменения долетают мгновенно. Регистрации и паролей нет — создаёшь сессию, отправляешь ссылку, человек заходит под сгенерированным ником.

Языков заметно больше! — В выпадающем списке ячейки всё разложено по группам:

  • Разметка и данные — Markdown, HTML, CSS, SCSS, LESS, XML, JSON, YAML, TOML, SQL
  • Скрипты — Python, JavaScript, TypeScript, Shell / Bash, PowerShell, Ruby, Perl, Lua, R, Julia, PHP, Groovy
  • Компилируемые — C, C++, C#, Java, Kotlin, Scala, Go, Rust, Swift, Dart, Objective-C
  • Прочее — Haskell, Clojure, Erlang, Dockerfile и режим без подсветки

У markdown-ячеек есть переключатель «Просмотр»: таблицы, списки задач и заголовки рендерятся по-настоящему, причём режим у каждого участника свой, а содержимое общее.

Сессию можно забрать с собой. Кнопка «Скачать .md» собирает всё в один файл: шапка с датой и списком участников, каждая ячейка отдельным блоком кода. Удобно приложить к фидбеку.

Выполнения кода нет и не планируется — это редактор, а не песочница. Сессии живут в памяти процесса и удаляются через несколько часов после того, как из них вышел последний участник.

LiveCoding — интерфейс
Кликните, чтобы открыть в полном размере