К содержимому
XMVP eXchange Minimal Viable Project

Комнаты для кода и файлов

Кидаешь ссылку,
и вы уже в одной комнате

Общий редактор с чужими курсорами, файлы и папки целиком, архив всей комнаты одним нажатием. Пустая комната стирается через 10 минут вместе со всем, что в ней лежало.

Попробовать

Почта и пароль не нужны: приложение сразу спросит, завести анонимную комнату или войти в аккаунт. Аккаунт нужен для постоянных комнат, истории версий и токена API.

Комната x7f2k9qzd
МД Г42 КС трое сейчас здесь

Файлы комнаты

6 штук, 4,7 МБ
  • parser2 файла
  • tokenize.js12 КБ
  • rules.json3,4 КБ
  • tests1 файл
  • макет.pdfедет, 62 %

Папку можно перетащить целиком, структура сохранится.

Общий текст

правки видны всем сразу

Договорились по формату ответа: список приходит страницами, у каждой страницы свой курсор.

Ошибку отдаём человеческим текстом, а код держим отдельным полем.

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

Пустая комната сгорит через 09:41 Снимок версии сохранён в 16:41 Ссылка скопирована

Ссылка и есть доступ

Никаких приглашений на почту и ожидания подтверждений. Комната создаётся сразу, адрес можно скинуть в любой чат, и человек оказывается внутри в том же виде, что и вы.

Комната за одно нажатие
Адрес из девяти случайных символов, ничего осмысленного в нём нет, подобрать его перебором не выйдет.
Пароль, если он нужен
На постоянную комнату ставится пароль. Он хранится хэшем, восстановить его нельзя даже с сервера.
Новый адрес в один клик
Ссылка ушла не тому, кому надо. Когда в комнате никого не осталось, меняешь адрес, и старый перестаёт работать в ту же секунду.

Папка целиком, со структурой

Не нужно собирать архив руками и следить, ничего ли не потерялось. Каталог уезжает как есть, вложенность сохраняется, а на другой стороне его видно деревом.

Перетащи каталог
Папка попадает в комнату вместе с вложенными папками, структура путей сохраняется.
Скачивание по одному или архивом
Забрать можно отдельный файл, а можно всю комнату одним архивом с той же структурой.
Тяжёлые файлы едут частями
Большой файл нарезается на куски по 256 КБ, поэтому память браузера не забивается и видно точный прогресс.

выгрузка

брось папку сюда
Состояние выгрузки файлов
parser/tokenize.js18 КБготово
parser/rules.json6 КБготово
assets/dump.sql4,1 МБ62 %
tests/basic.spec.js3 КБв очереди

Через 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 ГБ трафика в сутки на токен.

Документация API Кабинет и токен

# создать постоянную комнату
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 часовпостоянный, сбрасывается вручную
Запросов в секунду15
Запросов в сутки500500
Трафик в сутки3 ГБ3 ГБ
Размер одного файла1 ГБ1 ГБ

Куда идём

Ниже честная карта проекта: что уже работает, чем занимаемся прямо сейчас и что ждёт своей очереди. Порядок внутри последних шагов ещё может поменяться, сроки не обещаем.

  1. Шаг 1 готово

    Основа работает

    • временные комнаты по ссылке, без почты и пароля
    • общий редактор, правки и чужие курсоры видны сразу
    • файлы и папки целиком, архив всей комнаты одним нажатием
    • аккаунт по секретной фразе, до пяти постоянных комнат
    • история версий и откат к любому снимку
    • открытое API с токенами и сборка всех сервисов в докере
  2. Шаг 2 делаем сейчас

    Тарифы и расширенные лимиты

    • платная подписка с понятной сеткой тарифов
    • расширенные лимиты на трафик, размер файлов и число постоянных комнат
    • расход лимитов видно в кабинете, без сюрпризов в конце месяца
  3. Шаг 3 в очереди

    Люди и клиенты

    • друзья: короткий список тех, кому комната отдаётся одним нажатием
    • чат в комнате рядом с редактором, живёт ровно столько, сколько комната
    • нативные клиенты для Windows, macOS и Linux
    • мобильные клиенты для Android и iOS
  4. Шаг 4 горизонт

    Запуск кода в комнате

    • песочницы: код комнаты запускается в изолированном контейнере
    • сборки и проверки по событию в комнате, привычный CI и CD
    • помощник на базе ИИ прямо в общем редакторе: подсказки, разбор ошибок, правки

Хочется что-то из списка раньше остальных или не хватает своего пункта? Напишите на почту из подвала, такие письма двигают очередь.

Частые вопросы

Что будет, если все закроют вкладку?

Временная комната ждёт 10 минут. Если за это время кто угодно откроет ссылку, отсчёт сбросится и комната продолжит жить. Если нет, файлы и текст редактора удаляются с диска. Постоянная комната владельца по таймеру не сгорает.

Кто сможет открыть комнату по ссылке?

Любой, у кого эта ссылка есть, если на комнате не стоит пароль. Так и задумано: адрес заменяет приглашение. Если нужен барьер, поставьте пароль. Сменить адрес можно, когда в комнате никого не осталось: новая ссылка выдаётся сразу, старая перестаёт работать.

Файлы шифруются на сервере?

Нет. Соединение идёт по HTTPS, но на диске файлы лежат в обычном виде до удаления комнаты. Для паролей, паспортов и рабочих секретов это не хранилище: это способ быстро передать код и рабочие файлы человеку, с которым вы сейчас разговариваете.

Есть ограничение на размер?

На один запрос к API тело до 512 КБ. Файлы едут отдельным каналом кусками по 256 КБ, один файл до 1 ГБ, дальше упираемся в суточный трафик 3 ГБ на токен и место на диске сервера.

Чем это отличается от облачного диска?

Облако создано, чтобы хранить. Здесь наоборот: комната сама убирает за собой, ничего не копится, никакой библиотеки файлов не появляется. Плюс в комнате есть общий редактор, а не только список вложений.

Можно поднять у себя?

Да. Код открыт под лицензией MIT, инструкция по развёртыванию лежит в репозитории в файле docs/DEPLOY.md, ссылка на репозиторий в шапке. Сервис собран из пяти отдельных частей и запускается в докере одной командой, все адреса, лимиты и сроки жизни задаются переменными окружения.

Длинные ответы: хранение, лимиты, лицензия

Комната создаётся быстрее, чем читается это предложение

Ни почты, ни подтверждения, ни установки. Открыл, скинул ссылку, работаете.

Попробовать