first commit
This commit is contained in:
141
README.md
Normal file
141
README.md
Normal file
@@ -0,0 +1,141 @@
|
||||
# 🕊️ Мессенджер «Ласточка»
|
||||
|
||||
Защищённый мессенджер с открытым исходным кодом, построенный на базе **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-клиент
|
||||
|
||||
```bash
|
||||
cd lastochka-ui
|
||||
npm install
|
||||
cp .env.example .env.local # при необходимости
|
||||
npm run dev # http://localhost:5173
|
||||
npm run build # production-сборка
|
||||
```
|
||||
|
||||
### Android-клиент
|
||||
|
||||
```bash
|
||||
cd lastochka-android-compose
|
||||
./gradlew assembleDebug # сборка APK
|
||||
./gradlew test # запуск тестов
|
||||
```
|
||||
|
||||
### Сервер
|
||||
|
||||
```bash
|
||||
cd lastochka-server
|
||||
go build -o tinode .
|
||||
./tinode -config tinode.yml
|
||||
```
|
||||
|
||||
### Docker (полный стек)
|
||||
|
||||
Полная инструкция по развёртыванию — в [PROJECT_CONTEXT.md](../PROJECT_CONTEXT.md) и [instructions/deploy.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](./LICENSE) в корне этого репозитория.
|
||||
|
||||
## Участие
|
||||
|
||||
Мы приветствуем контрибьюторов! Смотрите [CONTRIBUTING.md](../CONTRIBUTING.md) в корневой директории проекта.
|
||||
|
||||
### С чего начать
|
||||
|
||||
1. Прочитайте этот README и [CONTRIBUTING.md](../CONTRIBUTING.md)
|
||||
2. Посмотрите открытые **Issues** — выберите задачу по силам
|
||||
3. Напишите в комментарии к задаче: «Беру в работу»
|
||||
4. Создайте ветку от `develop`, работайте, отправляйте MR
|
||||
|
||||
## Связь
|
||||
|
||||
- **Issues** — баг-репорты, фич-реквесты
|
||||
- **Discussions** — идеи, обсуждения архитектуры
|
||||
- **Email** — вопросы к мейнтейнерам
|
||||
Reference in New Issue
Block a user