Skip to content

deedtm/pneumamesh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PneumaMesh Logo

PneumaMesh

P2P-мессенджер для связи без интернета (только под Android)

Android Flutter Go libp2p

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 версию, если вы не уверены или хотите просто установить

About

p2p mesh messenger

Resources

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors