mirror of
https://github.com/dev993848/lastochka-messenger.git
synced 2026-05-23 13:45:50 +00:00
d266606297
- lastochka-server: removed nested .git, now browsable on GitHub - lastochka-ios: removed nested .git, now browsable on GitHub - lastochka-android: added (Kotlin + Jetpack Compose) - lastochka-desktop: added (Electron + React) - lastochka-android-compose: removed (replaced by lastochka-android) - lastochka-ui: updated to latest prototype - .gitignore: added .gradle/, Pods/, DerivedData/, local.properties Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4.6 KiB
4.6 KiB
Lastochka Android (Compose)
Мессенджер «Ласточка» для Android — Jetpack Compose + собственный Tinode HTTP-клиент.
Архитектура
MVVM + Repository pattern
UI (Compose) → ViewModel → Repository → TinodeHttpClient (OkHttp WebSocket) + Room DB
Структура
app/src/main/java/ru/lastochka/messenger/
├── LastochkaApp.kt — Application, инициализация
├── MainActivity.kt — Точка входа, навигация
├── data/
│ ├── TinodeClient.kt — Высокоуровневый клиент (сессия + auth)
│ ├── TinodeHttpClient.kt — Низкоуровневый WebSocket-клиент (OkHttp)
│ ├── ChatRepository.kt — Repository
│ ├── local/
│ │ └── AppDatabase.kt — Room DB
│ └── model/
│ └── TinodeProtocol.kt — Модели Tinode-протокола
├── viewmodel/
│ ├── AuthViewModel.kt — Вход/регистрация
│ ├── ChatListViewModel.kt — Список чатов
│ └── ChatViewModel.kt — Экран чата
├── navigation/
│ └── Screen.kt — Маршруты навигации
├── di/
│ └── AppModule.kt — Hilt модули
└── ui/
├── screens/
│ ├── auth/ — LoginScreen, RegisterScreen
│ ├── chat/ — ChatScreen
│ └── chatlist/ — ChatListScreen
├── components/ — Avatar, ChatItem, MessageBubble, ...
└── theme/ — Color, Theme, Type
Технологии
| Компонент | Технология |
|---|---|
| UI | Jetpack Compose + Material 3 |
| DI | Hilt 2.52 + KSP |
| DB | Room 2.6.1 + KSP |
| Networking | OkHttp 4.12.0 (WebSocket) |
| Serialization | Gson 2.11.0 |
| Async | Kotlin Coroutines + Flow |
| Build | Gradle 8.7, Kotlin 1.9.25 |
Быстрый старт
Требования
- JDK 17+ (Android Studio JDK или системная)
- Android SDK 35 (compileSdk), minSdk 26
- Gradle 8.7
Сборка
# Windows
set JAVA_HOME=C:\Program Files\Android\Android Studio\jbr
set PATH=%JAVA_HOME%\bin;%PATH%
cd dev\lastochka-android-compose
gradlew.bat assembleDebug
# Linux/macOS
export JAVA_HOME=/path/to/android-studio/jbr
cd dev/lastochka-android-compose
./gradlew assembleDebug
Результат: app/build/outputs/apk/debug/app-debug.apk (~22 MB)
Запуск на эмуляторе
adb install app/build/outputs/apk/debug/app-debug.apk
adb shell am start -n ru.lastochka.messenger/.MainActivity
Конфигурация сервера
Сервер настраивается в app/build.gradle.kts:
debug {
resValue("string", "default_host_name", "app.lastochka-m.ru")
resValue("string", "default_api_key", "AQEAAAABAAD_...")
}
Для локальной разработки измените hostName на localhost:6060 и useTLS = false.
Протокол
Приложение использует Tinode протокол поверх WebSocket:
- Подключение:
wss://host/ws+ headerX-Tinode-APIKey - Аутентификация:
basic(логин/пароль) илиtoken - Сообщения: plain text
{"txt": "..."}(Drafty пока не поддерживается)
Подробная документация: docs/MIGRATION.md
Иконка приложения
- Источник:
Brand/logo2.png(ласточка, градиент blue→purple) - Формат: Adaptive Icons (Android 8+)
- Плотности: mdpi (48px), hdpi (72px), xhdpi (96px), xxhdpi (144px), xxxhdpi (192px)
- Play Store: 512×512px
- Splash: PNG в 5 плотностях (120–480px)
Известные ограничения
- Только текстовые сообщения (нет Drafty, файлов, изображений)
- Нет push-уведомлений
- Нет видеозвонков
- Нет E2E шифрования
Планы
- Drafty парсер для форматированных сообщений
- Загрузка файлов/изображений
- Push-уведомления (Firebase)
- Offline-кэш сообщений
- Видеозвонки (WebRTC)
Лицензия
Apache-2.0 (форк HuLa + Tinode)
© 2026 Ласточка