Macaroni Messenger — это мессенджер, который работает как один HTML-файл. Никакого бэкенда, никаких регистраций, никаких установок. Просто открываешь messenger.html в Chrome, Chromium или Edge — и всё. Даже localhost не нужен, только двойной клик.
Сообщения хранятся в Git-репозиториях. База данных — Git, транспорт — Git, синхронизация — Git, история — Git. Звучит ужасно, но работает. Разработчик признаёт: это плохая идея, но она функциональна и, что важно, смешна.
Внутри репозитория все данные лежат в папке .macaroni/. Там протокол, пользователи, чаты, сообщения и входящие подсказки. Сообщения — это просто JSON-файлы с датой в пути: chats/<chat_id>/messages/YYYY/MM/DD/<message_id>.json. Можно редактировать их обычными Git-инструментами.
Сейчас встроенный адаптер для записи есть только для GitHub. Нужен fine-grained токен с правами Contents: Read and write. GitLab, GitVerse, Gitea, Forgejo и другие хостинги — это пока только цели протокола, для них нужны браузерные адаптеры. Чистый SSH через Git в браузере не работает — браузеры устроены «неправильно».
Реального времени нет. Новые сообщения приходят через опрос. Исходящие уходят через локальный outbox. GitHub API имеет лимиты — поэтому демо использует вшитые данные, чтобы не жечь неаутентифицированный лимит.
Токены хранятся в localStorage. Это удобно, но небезопасно. Если репозиторий публичный — сообщения публичные. Если приватный — их видят все, у кого есть доступ. Для приватности нужно ставить плагин шифрования — удачи.
Macaroni Messenger масштабируется плохо. Если репозиторий стал слишком большим — создай новый. Это называется «масштабирование».
Проект родился из простой идеи: отправить маме сообщение «свари макароны» не должно требовать инфраструктуры небольшого банка. Автор написал дорожную карту, лёг спать, а кодовый агент реализовал её. Проснувшись, автор обнаружил готовый мессенджер. Проект на 1000% «vibecoded» — современные инструменты позволяют идее превратиться в софт до того, как здравый смысл успеет вмешаться.
В списке того, что отказываются строить — Kubernetes, микросервисы, service mesh, брокеры сообщений, блокчейн и «корпоративные AI-фичи». Сложность ради сложности — нет.
Главные вопросы перед реализацией: можно ли решить задачу меньшим числом файлов? Без бэкенда? Через Git? Через JSON? Через HTML? Функционально и смешно? Если да — выбирай этот путь.