Как всё связано
- 01Код или .zip
- 02WASM-форматтер
- 03Комментарии
- 04Короткая ссылка
- 05Отметки и ответы
Логика, а не пробелы
Код приходит уже отформатированным: clang-format для C++, C, Java и C# в любом из привычных стилей, Ruff для Python, gofmt для Go, Prettier для TypeScript и JSON. Все собраны в WebAssembly и грузятся только для нужного языка. Диф показывает, что именно поменял форматтер.
Комментарии со степенью важности
Пять фиксированных уровней: Blocker, Issue, Suggestion, Nit и Praise. Клик по номеру строки, Shift-клик для диапазона или выдели код и нажми правую кнопку, чтобы процитировать его или превратить в предложенную правку.
Одна ссылка, без аккаунтов
Публикация даёт короткую ссылку для ученика и приватную ссылку на редактирование для ментора.
- Ключ редактирования лежит во фрагменте URL и не попадает в логи сервера. Сервер хранит только его SHA-256 и сравнивает за постоянное время.
- Ссылка живёт 1, 7 или 30 дней либо бессрочно.
- У ученика прогресс-бар, чек-лист с блокерами наверху, ветки ответов и
.zipотформатированного проекта.
Итерации не теряют место
Загрузи исправленную версию, и каждый комментарий останется на своей строке: LCS-диф переносит каждую старую строку на новое место. Отметки и ответы ученика сливаются по id комментария, так что повторная публикация ничего не теряет.
Стек
React 19 и Vite в браузере; Hono на Node 24 со встроенным node:sqlite и без сборки для сервера. Русский и английский с честными склонениями, вплоть до превью ссылки в Telegram. GitHub Actions выкатывает его ключом, которому разрешён ровно один скрипт.