2ad5e03cb73ed98f5448280969b930ae9e6314b3
School BLE Mesh Messenger
Проект для школьного офлайн-месседжера на базе BLE P2P mesh-сети.
Цель
Создать систему общения между учениками и учителями без зависимости от интернета:
- обмен сообщениями в пределах школы;
- работа в условиях отсутствия Wi-Fi/мобильной сети;
- безопасное взаимодействие с базовой модерацией.
Стек
- Android приложение: Kotlin
- Сборка: Gradle +
Gradle Wrapper - Промо/лендинг сайт: HTML + CSS + JS + Bootstrap + Bootstrap Icons
Концепция сети
- Устройства действуют как BLE-ноды.
- Сообщения передаются hop-by-hop (mesh-подход).
- Каждый пакет имеет
messageId,ttl,senderId,timestamp. - Узлы хранят кратковременный кэш, чтобы избегать дубликатов.
- Доставка подтверждается ACK-пакетами.
Основные компоненты Android-приложения
-
BLE Transport Layer
- сканирование соседей;
- реклама (advertising) своего присутствия;
- установление BLE-соединений;
- отправка/приём фрагментированных пакетов.
-
Mesh Routing Layer
- пересылка пакетов с TTL;
- фильтрация дублей;
- политика повторных отправок.
-
Messaging Layer
- личные сообщения;
- групповые чаты (класс/учителя);
- статусы доставки (queued/sent/relayed/delivered).
-
Data Layer
- локальное хранилище (Room);
- кэш пользователей, чатов, сообщений, ключей.
-
Security Layer
- идентификация пользователя;
- шифрование сообщений (напр. E2E для приватных чатов);
- защита от подмены/повтора пакетов.
Этапы разработки (Roadmap)
- Подготовка Android-проекта на Kotlin + Gradle.
- Реализация BLE-обнаружения и рекламы узлов.
- Реализация протокола пакетов (формат, TTL, ACK, дедупликация).
- Базовый mesh-relay между 3+ устройствами.
- Экран чатов и отправка текстовых сообщений.
- Локальная БД (Room) и история сообщений.
- Минимальное шифрование и валидация пакетов.
- Тестирование в школьном сценарии (коридоры/классы/этажи).
- Создание сайта проекта с описанием и кнопкой скачивания APK.
- Подготовка релиза и документации для пилотного запуска.
Задачи (Backlog)
- Инициализировать Android-проект (
appмодуль + базовый каркас репозитория). - Добавить Android-модули
domain,data,mesh. - Настроить
minSdkи базовые BLE-permissions. - Добавить foreground service для фоновой mesh-работы.
- Описать формат сетевого пакета (черновой JSON codec + модель пакета).
- Реализовать базовый BLE bootstrap (scanner + advertiser + runtime permissions).
- Реализовать минимальный GATT-обмен между BLE-узлами.
- Реализовать очередь отправки + ретраи + ACK timeout.
- Добавить защиту от дубликатов по
messageId(in-memory cache, базово). - Реализовать mesh-forwarding с ограничением TTL (routing action layer, базово).
- Добавить UI для списка чатов и окна сообщений.
- Подключить Room и миграции схемы.
- Добавить логирование сети и debug-экран маршрутов.
- Реализовать базовую регистрацию пользователя (локальный профиль).
- Добавить шифрование полезной нагрузки сообщений.
- Написать инструментальные тесты BLE-обмена.
- Создать сайт (
index.html,styles.css,app.js) на Bootstrap. - Добавить страницу скачивания APK и раздел документации.
- Подготовить CI-сборку (GitHub Actions
assembleDebug). - Собрать и опубликовать debug APK на сайте проекта.
Предлагаемая структура репозитория
android/— Android-приложение (Kotlin + Gradle)website/— сайт проекта (HTML/CSS/JS + Bootstrap)docs/— документация протокола и архитектуры
Автоматизация
make client-build— увеличить версию и собратьdebugAPK.make client-publish— опубликовать собранный APK на сайт и обновитьversion.json.make publish— увеличить версию, собрать APK, опубликовать клиент и перезагрузитьnginx.make server-start|server-stop|server-restart|server-status|server-rebuild— управлениеnginx.
Ближайший следующий шаг
Добавить очередь отправки, ACK timeout/retry и локальное хранение сообщений через Room.
Description
Languages
Kotlin
90%
HTML
3.6%
Shell
2.3%
JavaScript
2.1%
Makefile
1.6%
Other
0.4%