TotalMessenger · Локальный прототип мессенджера

Android Phase 0: контакты, текстовые сообщения, очередь исходящих и фоновая попытка доставки. Реальной SMTP/HTTP/mesh-отправки нет — email-транспорт сейчас stub. Не путать с MeshMessenger.
Возможности
- Экран чата — Jetpack Compose, один чат
default-chat. - Контакты — имя, телефон, email, Wi-Fi ID, Bluetooth ID.
- Outbox — сообщение пишется в Room как
PENDING, дальше WorkManager. - Статусы —
pending,sent,delivered,failed(stub обычно ставитsent). - Роутер транспорта — всегда
EMAIL;EmailTransportEngineждёт 150 мс и отвечает успехом.
Нет сети, нет permission INTERNET, нет выбора чата, нет Gradle wrapper.
Требования
- Android 8 (API 26)+, compile/target SDK 35.
- Android Studio, JDK 17, установленный Gradle (wrapper в репозитории нет).
Установка и запуск
Откройте D:\AndroidProjects\TotalMessenger в Android Studio, синхронизируйте Gradle.
gradle :app:assembleDebug
gradle :app:installDebug
Использование
Контакт и сообщение
- Запустите приложение.
- Добавьте контакт (пустые optional-поля очищаются).
- Введите текст и отправьте.
- Сообщение появляется в ленте; фоновый worker меняет статус с
PENDINGнаSENT.
Получатель захардкожен (me / peer). На другой телефон ничего не уходит.
Структура проекта
TotalMessenger/
├── app/ # модуль :app
├── doc/
├── README.md
├── build.gradle.kts
└── settings.gradle.kts
Слои, Room и outbox — в doc/ARCHITECTURE.md.
Технологии
- Kotlin 1.9.24, AGP 8.5.2, JVM 17.
- Compose + Material3, ViewModel, Flow.
- Room 2.6.1 —
total-messenger.db, schema 1,exportSchema = true. - WorkManager 2.9.0 —
OutboxWorker. - AppContainer — ручной DI, без Hilt/Koin.
Разрешения
В манифесте сетевых permission нет. Данные только локально в Room.
История изменений
Формат основан на Keep a Changelog.
[Unreleased]
Changed
- README приведён к лицу продукта: заголовок с «·», честно Phase 0 и stub-транспорт; убраны бейджи, плейсхолдеры скриншотов и roadmap.
doc/AI_RULES.md: канонAndroidProjects\TotalMessenger, не путать с MeshMessenger.
[1.0.0] — 2026-05-28
Added
- Добавлен одномодульный Android-проект
TotalMessengerс модулем:app. - Добавлен Compose UI для базового экрана чата и формы контактов.
- Добавлены доменные модели
MessageиContact. - Добавлены use case для отправки сообщения и добавления контакта.
- Добавлено Room-хранилище
total-messenger.dbс таблицамиmessagesиcontacts. - Добавлен outbox flow: сообщения сохраняются как
PENDING, затем обрабатываются через WorkManager. - Добавлен транспортный слой:
MessageRouter,TransportEngine,EmailTransportEngine.
Технические заметки: отправка не выполняет реальную доставку из UI. SendMessageUseCase создаёт pending-запись, OutboxWorkScheduler ставит OutboxWorker.
Changed
- Архитектура зафиксирована как слои
ui -> domain -> data, пакетыworkиdi. - DI вручную через
AppContainer, без Hilt/Koin. - Роутинг Phase 0 всегда выбирает
TransportType.EMAIL.
Fixed
- На момент создания документации отдельные багфиксы не зафиксированы.



