mirror of
https://github.com/dev993848/lastochka-messenger.git
synced 2026-05-23 13:45:50 +00:00
5dd59fd27361abc83fe9d1506e6a566f4bbf1fa3
🕊️ Мессенджер «Ласточка»
Защищённый мессенджер с открытым исходным кодом, построенный на базе Tinode (Go-сервер) с кастомным фронтендом.
Возможности
- Чаты и группы — личная переписка, групповые чаты, каналы
- Медиа — отправка изображений и голосовых сообщений
- Поиск пользователей — по логину, email, телефону
- Тёмная тема — автоматическое переключение
- Офлайн-индикатор — мониторинг подключения с автопереподключением
- Reply, edit, delete, forward — полноценное управление сообщениями
- Typing indicators — индикаторы набора в реальном времени
- Модерация — бан, мут, пин, управление участниками групп
Платформы
| Платформа | Путь | Статус |
|---|---|---|
| Web | lastochka-ui/ |
✅ Работает |
| Android | lastochka-android-compose/ |
✅ Работает |
| iOS | lastochka-ios/ |
⏳ В разработке |
| Сервер | lastochka-server/ |
✅ Работает |
Структура репозитория
dev/
├── lastochka-ui/ # Web-клиент (React 18 + TypeScript + Tailwind + Zustand)
├── lastochka-android-compose/ # Android-клиент (Kotlin + Jetpack Compose + Hilt + Room)
├── lastochka-ios/ # iOS-клиент (Swift, форк Tinode)
├── lastochka-server/ # Tinode-сервер (Go, форк)
└── README.md # Этот файл
Быстрый старт
Web-клиент
cd lastochka-ui
npm install
cp .env.example .env.local # при необходимости
npm run dev # http://localhost:5173
npm run build # production-сборка
Android-клиент
cd lastochka-android-compose
./gradlew assembleDebug # сборка APK
./gradlew test # запуск тестов
Сервер
cd lastochka-server
go build -o tinode .
./tinode -config tinode.yml
Docker (полный стек)
Полная инструкция по развёртыванию — в PROJECT_CONTEXT.md и instructions/deploy.md.
Стек технологий
Web
| Технология | Назначение |
|---|---|
| React 18 + TypeScript | UI + типизация |
| Zustand | State management |
| Tailwind CSS | Стилизация |
| Vite | Сборщик |
| tinode-sdk | WebSocket-клиент Tinode |
| lucide-react | Иконки |
Android
| Технология | Назначение |
|---|---|
| Kotlin + Jetpack Compose | UI |
| Hilt | Dependency injection |
| Room | Локальная БД |
| OkHttp | WebSocket + HTTP |
| Coroutines + Flow | Асинхронность |
Сервер
| Технология | Назначение |
|---|---|
| Go 1.21+ | Язык сервера |
| PostgreSQL 16 | Основная БД |
| Redis 7 | Кэш и pub/sub |
| MinIO | S3-совместимое хранилище |
Архитектура
┌─────────────────┐ ┌──────────────────┐
│ Web (React) │ │ Android (Kotlin)│
└────────┬────────┘ └────────┬─────────┘
│ WebSocket (wss://) │
▼ ▼
┌────────────────────────────────────────┐
│ Tinode Server (Go, порт 6060) │
│ • Auth • Messaging • Push • Media │
└────────────┬───────────────────────────┘
│
┌────────┼────────┐
▼ ▼ ▼
PostgreSQL Redis MinIO (S3)
Пользователь подключается через WebSocket → Tinode обрабатывает аутентификацию, сообщения, присутствие → медиа хранятся в MinIO → данные пользователей и сообщения в PostgreSQL → кэш в Redis.
Лицензия
Серверная часть (форк Tinode) распространяется под GPL v3. Клиентские компоненты — см. лицензию в каждом подпроекте.
Подробности — файл LICENSE в корне этого репозитория.
Участие
Мы приветствуем контрибьюторов! Смотрите CONTRIBUTING.md в корневой директории проекта.
С чего начать
- Прочитайте этот README и CONTRIBUTING.md
- Посмотрите открытые Issues — выберите задачу по силам
- Напишите в комментарии к задаче: «Беру в работу»
- Создайте ветку от
develop, работайте, отправляйте MR
Связь
- Issues — баг-репорты, фич-реквесты
- Discussions — идеи, обсуждения архитектуры
- Email — вопросы к мейнтейнерам
Description
Languages
Go
48.6%
Java
17.7%
TypeScript
14.3%
Kotlin
12.5%
Python
4.3%
Other
2.5%