PneumaMesh — это мессенджер для чрезвычайных ситуаций, мест, где не ловит сеть, или для тех, кому периодически приходится испытывать проблемы с интернетом. Он работает без серверов, связывая телефоны локально по Bluetooth.
- Работает без интернета: Связь идет напрямую от девайса к девайсу через Bluetooth (BLE L2CAP COC).
- Режим SOS: Если случилась беда (например, завалило в подвале, но двигаться можно), жмете кнопку — и приложение каждые 30 секунд рассылает всем поблизости вашу геолокацию. Другие устройства получат уведомление о вашем сигнале.
- Радар сигналов SOS: В приложении есть отдельная страница, где можно просмотреть все активные SOS-сигналы вокруг и стрелка, показывающая, как добраться до каждого источника сигнала.
- Децентрализованная сеть: Сервера/хоста не существует. Сообщения равноправно отправляются через каждого, что позволяет общаться без зависимости от конкретных устройств.
- Общие комнаты: Каждый пользователь делится своими комнатами с другими. Комнаты, в которых никто не писал на протяжении 5 минут, удаляются автоматически (за исключением главной комнаты).
- Local-first: Все сообщения хранятся локально на устройстве.
- Приватность: E2E шифрование сообщений обеспеченное с помощью библиотеки
libp2p-go. - Удобства обычного мессенджера: Список комнат (чатов), в каждой из которых можно общаться. Возможность заглушить (выключить уведомления) или удалить комнату, а также можно создать свою комнату. Уведомления о новых сообщениях, разделенные по комнатам. Уникальные профили пользователей. Поддержка нескольких аккаунтов на одном устройстве. Сохранение истории сообщений даже после закрытия приложения.
Вся тяжелая логика распределения сообщений - ядро - написана на Go с помощью библиотеки libp2p-go.
Интерфейс написан на языке Dart с использованием фреймворка Flutter.
Для передачи данных между ядром и интерфейсом используется мост через язык C. Для реализации моста используется cgo на Go, dart ffi на Dart. На Go-стороне регистрируются callback-функции, а на Dart-стороне реализованы обработчики этих функций.
Сами данные передаются в формате protobuf, что позволяет оптимизировать скорость передачи данных.
Приложение доступно исключительно под Android-устройства.
Для установки перейдите в раздел Releases этого репозитория и скачайте:
arm-v7aверсию, если вы считаете, что ваш телефон далеко не новыйarm64-v8aверсию, если у вас новый телефонuniversalверсию, если вы не уверены или хотите просто установить