Files
lastochka-messenger/README.md
Anton Budylin 5dd59fd273 first commit
2026-04-14 10:56:49 +03:00

5.8 KiB
Raw Permalink Blame History

🕊️ Мессенджер «Ласточка»

Защищённый мессенджер с открытым исходным кодом, построенный на базе 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 в корневой директории проекта.

С чего начать

  1. Прочитайте этот README и CONTRIBUTING.md
  2. Посмотрите открытые Issues — выберите задачу по силам
  3. Напишите в комментарии к задаче: «Беру в работу»
  4. Создайте ветку от develop, работайте, отправляйте MR

Связь

  • Issuesбаг-репорты, фич-реквесты
  • Discussions — идеи, обсуждения архитектуры
  • Email — вопросы к мейнтейнерам