Комнаты для кода и файлов
Кидаешь ссылку,
и вы уже в одной комнате
Общий редактор с чужими курсорами, файлы и папки целиком, архив всей комнаты одним нажатием. Пустая комната стирается через 10 минут вместе со всем, что в ней лежало.
Почта и пароль не нужны: приложение сразу спросит, завести анонимную комнату или войти в аккаунт. Аккаунт нужен для постоянных комнат, истории версий и токена API.
app.xmvp.ru/#r=x7f2k9qzd Скопировать
Файлы комнаты
6 штук, 4,7 МБ- parser2 файла
- tokenize.js12 КБ
- rules.json3,4 КБ
- tests1 файл
- макет.pdfедет, 62 %
Папку можно перетащить целиком, структура сохранится.
Общий текст
правки видны всем сразуДоговорились по формату ответа: список приходит страницами, у каждой страницы свой курсор.
Ошибку отдаём человеческим текстом, а код держим отдельным полем.
Осталось проверить лимиты и выложить черновик документации.
Папка целиком, со структурой
Не нужно собирать архив руками и следить, ничего ли не потерялось. Каталог уезжает как есть, вложенность сохраняется, а на другой стороне его видно деревом.
- Перетащи каталог
- Папка попадает в комнату вместе с вложенными папками, структура путей сохраняется.
- Скачивание по одному или архивом
- Забрать можно отдельный файл, а можно всю комнату одним архивом с той же структурой.
- Тяжёлые файлы едут частями
- Большой файл нарезается на куски по 256 КБ, поэтому память браузера не забивается и видно точный прогресс.
выгрузка
| parser/tokenize.js | 18 КБ | готово |
|---|---|---|
| parser/rules.json | 6 КБ | готово |
| assets/dump.sql | 4,1 МБ | 62 % |
| tests/basic.spec.js | 3 КБ | в очереди |
Через 10 минут пустоты не остаётся ничего
Временная комната нужна на один разговор. Пока в ней кто-то есть, она живёт; как только вышел последний, включается обратный отсчёт.
- Отсчёт от последнего вышедшего
- Таймер стартует не с момента создания, а когда комната опустела, так что перерыв на кофе ничего не ломает.
- Кто-то вернулся, таймер сброшен
- Достаточно снова открыть ссылку в те же десять минут, и комната продолжает жить дальше.
- Стирается с диска
- Удаляются и файлы, и текст редактора. Ни ссылки, ни корзины, ни резервной копии не остаётся.
комната пуста
09:41
- 17:02 костя вышел
- 17:02 комната опустела, отсчёт пошёл
- 17:12 файлы будут удалены
Аккаунт даёт постоянные комнаты и версии
Если комната нужна дольше одного разговора, заводится владелец. Регистрация просит только ник, а вместо пароля выдаёт фразу из 12 слов, которую сервер не хранит.
- До пяти постоянных комнат
- Такая комната не сгорает по таймеру и ждёт с прошлого раза вместе со всеми файлами.
- Снимки версий и откат
- Перед рискованной правкой делается снимок, к любому можно вернуться, ничего не пересобирая руками.
- Фраза вместо пароля
- 12 слов по стандарту BIP39. На сервере лежит только хэш, поэтому фразу не подсмотрят и не восстановят.
история комнаты api-sketch
| когда | подпись | файлов |
|---|---|---|
| 28.08 16:41 | перед рефакторингом | 6 |
| 28.08 15:07 | рабочий разбор строк | 5 |
| 27.08 21:19 | первый набросок | 3 |
откат подставляет файлы снимка обратно в комнату, текущее состояние сохраняется отдельным снимком.
Открытое API
Сайт работает на том же API, что открыто всем
21 операция: аккаунты, комнаты, версии, токены. Файлы идут постоянным соединением. Лимиты честные: без аккаунта 1 запрос в секунду, с аккаунтом 5, до 500 запросов и 3 ГБ трафика в сутки на токен.
# создать постоянную комнату curl -X POST https://api.xmvp.ru/api/v1/rooms/create \ -H 'Authorization: Bearer xa_…' \ -H 'Content-Type: application/json' \ -d '{"permanent":true}' # снимок версии перед правками curl -X POST https://api.xmvp.ru/api/v1/versions/snapshot \ -H 'Authorization: Bearer xa_…' \ -d '{"id":"x7f2k9qzd","message":"перед рефакторингом"}'
Что доступно без аккаунта
Ничего не отключается на середине работы: разница только в сроке жизни комнаты и в истории.
| Возможность | Без аккаунта | С аккаунтом |
|---|---|---|
| Временные комнаты | сколько нужно | сколько нужно |
| Постоянные комнаты | нет | до 5 |
| Пароль на комнату | есть | есть |
| Смена адреса комнаты | нет | есть |
| История версий и откат | нет | есть |
| Токен API | временный, 12 часов | постоянный, сбрасывается вручную |
| Запросов в секунду | 1 | 5 |
| Запросов в сутки | 500 | 500 |
| Трафик в сутки | 3 ГБ | 3 ГБ |
| Размер одного файла | 1 ГБ | 1 ГБ |
Куда идём
Ниже честная карта проекта: что уже работает, чем занимаемся прямо сейчас и что ждёт своей очереди. Порядок внутри последних шагов ещё может поменяться, сроки не обещаем.
-
Основа работает
- временные комнаты по ссылке, без почты и пароля
- общий редактор, правки и чужие курсоры видны сразу
- файлы и папки целиком, архив всей комнаты одним нажатием
- аккаунт по секретной фразе, до пяти постоянных комнат
- история версий и откат к любому снимку
- открытое API с токенами и сборка всех сервисов в докере
-
Тарифы и расширенные лимиты
- платная подписка с понятной сеткой тарифов
- расширенные лимиты на трафик, размер файлов и число постоянных комнат
- расход лимитов видно в кабинете, без сюрпризов в конце месяца
-
Люди и клиенты
- друзья: короткий список тех, кому комната отдаётся одним нажатием
- чат в комнате рядом с редактором, живёт ровно столько, сколько комната
- нативные клиенты для Windows, macOS и Linux
- мобильные клиенты для Android и iOS
-
Запуск кода в комнате
- песочницы: код комнаты запускается в изолированном контейнере
- сборки и проверки по событию в комнате, привычный CI и CD
- помощник на базе ИИ прямо в общем редакторе: подсказки, разбор ошибок, правки
Хочется что-то из списка раньше остальных или не хватает своего пункта? Напишите на почту из подвала, такие письма двигают очередь.
Частые вопросы
Что будет, если все закроют вкладку?
Временная комната ждёт 10 минут. Если за это время кто угодно откроет ссылку, отсчёт сбросится и комната продолжит жить. Если нет, файлы и текст редактора удаляются с диска. Постоянная комната владельца по таймеру не сгорает.
Кто сможет открыть комнату по ссылке?
Любой, у кого эта ссылка есть, если на комнате не стоит пароль. Так и задумано: адрес заменяет приглашение. Если нужен барьер, поставьте пароль. Сменить адрес можно, когда в комнате никого не осталось: новая ссылка выдаётся сразу, старая перестаёт работать.
Файлы шифруются на сервере?
Нет. Соединение идёт по HTTPS, но на диске файлы лежат в обычном виде до удаления комнаты. Для паролей, паспортов и рабочих секретов это не хранилище: это способ быстро передать код и рабочие файлы человеку, с которым вы сейчас разговариваете.
Есть ограничение на размер?
На один запрос к API тело до 512 КБ. Файлы едут отдельным каналом кусками по 256 КБ, один файл до 1 ГБ, дальше упираемся в суточный трафик 3 ГБ на токен и место на диске сервера.
Чем это отличается от облачного диска?
Облако создано, чтобы хранить. Здесь наоборот: комната сама убирает за собой, ничего не копится, никакой библиотеки файлов не появляется. Плюс в комнате есть общий редактор, а не только список вложений.
Можно поднять у себя?
Да. Код открыт под лицензией MIT, инструкция по развёртыванию лежит в репозитории в файле docs/DEPLOY.md, ссылка на репозиторий в шапке. Сервис собран из пяти отдельных частей и запускается в докере одной командой, все адреса, лимиты и сроки жизни задаются переменными окружения.
Комната создаётся быстрее, чем читается это предложение
Ни почты, ни подтверждения, ни установки. Открыл, скинул ссылку, работаете.