Перейти к содержанию
Автор: LUMD

Macaroni: мессенджер в одном HTML-файле

Появился необычный мессенджер Macaroni, который работает прямо в браузере и использует Git-репозитории для хранения сообщений. Никаких серверов, баз данных и регистрации – только HTML, JSON и Git.

Мессенджер, который живёт в Git

Macaroni Messenger – мессенджер, реализованный в виде единственного HTML‑файла. Он использует Git‑репозитории для хранения всей информации, избавляя от необходимости в сервере и базе данных. Проект позиционируется как альтернатива сложным современным системам обмена сообщениями.

Как это работает

Macaroni хранит сообщения в специальной директории .macaroni/ внутри Git‑репозитория. Структура файлов проста и понятна: метаданные чатов, списки участников, сами сообщения, организованные по датам. Фактически, это набор JSON‑файлов, которые отслеживаются системой контроля версий.

Почему Git?

Разработчики объясняют свой выбор просто: Git уже умеет хранить файлы, а это как раз то, что нужно для обмена сообщениями. Такой подход позволяет использовать все преимущества Git – контроль версий, историю изменений, возможность репликации и децентрализации.

Что изменится для разработчиков

Macaroni предоставляет протокол .macaroni/, который может быть адаптирован для работы с различными Git‑хостингами. На данный момент встроенная поддержка есть только для GitHub, но в перспективе планируется добавить GitLab, GitVerse и другие. Для их интеграции потребуется разработать адаптер, совместимый с API хостинга.

Ограничения и особенности

Macaroni не обеспечивает приватность сообщений. Публичный репозиторий означает публичные сообщения, а доступ к приватному репозиторию даёт право читать все сообщения всем, у кого есть к нему доступ. Кроме того, проект полагается на GitHub API, что может привести к ограничениям по частоте запросов.

Что это значит для бизнеса

Macaroni демонстрирует, что даже сложные задачи можно решить с помощью простых инструментов. Использование Git для хранения данных может быть интересным решением для проектов, где важна децентрализация, контроль версий и прозрачность. Это может быть полезно, например, для внутренних коммуникаций в небольших командах или для хранения логов и аудита.