mirror of
https://github.com/fromchat-messenger/app.git
synced 2026-09-22 19:15:05 +03:00
+121
@@ -0,0 +1,121 @@
|
|||||||
|
Read in other languages: [Русский](./README.md)
|
||||||
|
|
||||||
|
# FromChat
|
||||||
|
|
||||||
|
FromChat is a 100% free and open-source messenger. This repository contains the cross-platform client for Android and iOS.
|
||||||
|
|
||||||
|
[📥 Download](https://github.com/fromchat-messenger/app/releases/latest) • [💬 Telegram Channel](https://t.me/fromchat_ch) • [🖥️ Server](https://github.com/fromchat-messenger/backend)
|
||||||
|
|
||||||
|
## ✨ Features
|
||||||
|
|
||||||
|
- **Voice and video calls** — high-quality communication via LiveKit
|
||||||
|
- **Screen sharing** — share your screen during calls
|
||||||
|
- **Group chat** — community of all server users
|
||||||
|
- **Direct messages** — uses legal encryption scheme. Server-side E2EE mode planned.
|
||||||
|
- **Device management** — control active sessions
|
||||||
|
- **Dark mode by default** — stylish and easy on the eyes
|
||||||
|
- **Open source** — full transparency
|
||||||
|
|
||||||
|
## 📊 Client Comparison
|
||||||
|
|
||||||
|
⚠️ **iOS is temporarily not supported.** iOS development requires a lot of time and due to Apple's restrictions it is much more complex than Android. Therefore it will be released later.
|
||||||
|
|
||||||
|
This table shows which features are implemented in the official clients.
|
||||||
|
|
||||||
|
|
||||||
|
| Feature | Android | Web | iOS |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| **Messaging and profiles** | ✅ | ✅ | ✅ |
|
||||||
|
| **Voice/video calls** | ✅ | ❌ | ❌ |
|
||||||
|
| **Screen sharing** | ✅ | ❌ | ❌ |
|
||||||
|
| **Message reactions** | ❌ | ✅ | ❌ |
|
||||||
|
| **Rich attachment support** | ✅ | ❌ | ❌ |
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🏗️ Tech Stack
|
||||||
|
|
||||||
|
- **Kotlin** — a programming language focused on safety and performance
|
||||||
|
- **Compose Multiplatform** — declarative UI framework for cross-platform development
|
||||||
|
- **Material Design 3** — modern user interface components
|
||||||
|
- **Ktor Client** — asynchronous HTTP client for network requests
|
||||||
|
- **LiveKit** — infrastructure for video calls and conferences
|
||||||
|
- **SQLDelight** — type-safe SQL queries for local data storage
|
||||||
|
- **Firebase Messaging** — push notifications
|
||||||
|
- **Coil** — image loading and caching
|
||||||
|
|
||||||
|
|
||||||
|
## 📥 Build and Development (Android Studio)
|
||||||
|
|
||||||
|
### Requirements
|
||||||
|
|
||||||
|
- Latest version of Android Studio
|
||||||
|
- Components updated to the latest versions
|
||||||
|
|
||||||
|
### Quick Start
|
||||||
|
|
||||||
|
1. **Clone the repository:**
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/fromchat-messenger/app.git
|
||||||
|
cd app
|
||||||
|
```
|
||||||
|
2. **Generate keys (Debug & Release):**
|
||||||
|
1. Set variables (replace `CHANGEME` with your secure passwords):
|
||||||
|
```bash
|
||||||
|
DEBUG_STORE_PASS=CHANGEME
|
||||||
|
DEBUG_KEY_PASS=CHANGEME
|
||||||
|
RELEASE_STORE_PASS=CHANGEME
|
||||||
|
RELEASE_KEY_PASS=CHANGEME
|
||||||
|
```
|
||||||
|
2. Run commands:
|
||||||
|
```bash
|
||||||
|
mkdir -p app/android/keys
|
||||||
|
|
||||||
|
keytool -genkey -v -keystore app/android/keys/debug.jks \
|
||||||
|
-keyalg RSA -keysize 2048 -validity 10000 \
|
||||||
|
-alias key0 -storepass $DEBUG_STORE_PASS -keypass $DEBUG_KEY_PASS \
|
||||||
|
-dname "CN=Debug, O=FromChat, C=RU"
|
||||||
|
|
||||||
|
keytool -genkey -v -keystore app/android/keys/release.jks \
|
||||||
|
-keyalg RSA -keysize 2048 -validity 10000 \
|
||||||
|
-alias key0 -storepass $RELEASE_STORE_PASS -keypass $RELEASE_KEY_PASS \
|
||||||
|
-dname "CN=Release, O=FromChat, C=RU"
|
||||||
|
|
||||||
|
cat > app/android/keystore.properties << EOF
|
||||||
|
releaseStorePassword=$RELEASE_STORE_PASS
|
||||||
|
releaseKeyPassword=$RELEASE_KEY_PASS
|
||||||
|
debugStorePassword=$DEBUG_STORE_PASS
|
||||||
|
debugKeyPassword=$DEBUG_KEY_PASS
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
3. **Open in Android Studio:**
|
||||||
|
- Select: `File → Open → app/`
|
||||||
|
- Android Studio automatically loads all dependencies and syncs Gradle
|
||||||
|
4. **Run:**
|
||||||
|
- Click `Run → Run 'Android'` (Shift+F10)
|
||||||
|
- Select an emulator or connected device
|
||||||
|
|
||||||
|
### Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
android/
|
||||||
|
├── app/ # Client code
|
||||||
|
│ ├── android/ # Android app module
|
||||||
|
│ └── shared/ # Shared Compose code (Android + iOS)
|
||||||
|
│ ├── commonMain/ # Cross-platform code
|
||||||
|
│ ├── androidMain/ # Android-specific code
|
||||||
|
│ └── iosMain/ # iOS-specific code (not ready yet)
|
||||||
|
├── utils/ # Module with useful stuff that can be used in other projects
|
||||||
|
│ ├── android/ # Android library module
|
||||||
|
│ └── shared/
|
||||||
|
└── gradle/libs.versions.toml # Dependency management
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🤝 Contribute
|
||||||
|
|
||||||
|
If you want to support the project development, just send a Pull Request. I'm sure you already know that, I'm too lazy to write it all out.
|
||||||
|
|
||||||
|
## 📄 License
|
||||||
|
|
||||||
|
This project is licensed under the GNU Affero General Public License v3.0. For details, see the [LICENSE](./LICENSE) file.
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
Читать на других языках: [English](./README.en.md)
|
||||||
|
|
||||||
|
# FromChat
|
||||||
|
|
||||||
|
FromChat — 100% бесплатный и открытый мессенджер. В этом репозитории содержится кроссплатформенный клиент для Android и iOS.
|
||||||
|
|
||||||
|
[📥 Скачать](https://github.com/fromchat-messenger/app/releases/latest) • [💬 Telegram-канал](https://t.me/fromchat_ch) • [🖥️ Сервер](https://github.com/fromchat-messenger/backend)
|
||||||
|
|
||||||
|
## ✨ Возможности
|
||||||
|
|
||||||
|
- **Голосовые и видеозвонки** — высокое качество связи через LiveKit
|
||||||
|
- **Совместное использование экрана** — демонстрация экрана при вызовах
|
||||||
|
- **Общий чат** — сообщество всех пользователей на сервере
|
||||||
|
- **Личные сообщения** — используется легальная схема шифрования. Планируется режим E2EE на сервере.
|
||||||
|
- **Управление устройствами** — контроль активных сеансов
|
||||||
|
- **Тёмный режим по умолчанию** — стильный и приятный для глаз вид
|
||||||
|
- **Открытый исходный код** — полная прозрачность
|
||||||
|
|
||||||
|
## 📊 Сравнение клиентов
|
||||||
|
|
||||||
|
⚠️ **iOS временно не поддерживается.** Разработка iOS-части требует много времени и из-за ограничений Apple это гораздо сложнее, чем на Android. Поэтому она выйдет позже.
|
||||||
|
|
||||||
|
В этой таблице показано, какие возможности реализованы в официальных клиентах.
|
||||||
|
|
||||||
|
|
||||||
|
| Возможность | Android | Web | iOS |
|
||||||
|
| ----------------------------------- | ------- | --- | --- |
|
||||||
|
| **Обмен сообщениями и профили** | ✅ | ✅ | ✅ |
|
||||||
|
| **Голосовые/видеозвонки** | ✅ | ❌ | ❌ |
|
||||||
|
| **Совместное использование экрана** | ✅ | ❌ | ❌ |
|
||||||
|
| **Реакции на сообщения** | ❌ | ✅ | ❌ |
|
||||||
|
| **Расширенная поддержка вложений** | ✅ | ❌ | ❌ |
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🏗️ Технологический стек
|
||||||
|
|
||||||
|
- **Kotlin** — язык программирования, ориентированный на безопасность и производительность
|
||||||
|
- **Compose Multiplatform** — объявленный UI фреймворк для кроссплатформенной разработки
|
||||||
|
- **Material Design 3** — современные компоненты пользовательского интерфейса
|
||||||
|
- **Ktor Client** — асинхронный HTTP клиент для сетевых запросов
|
||||||
|
- **LiveKit** — инфраструктура для видеозвонков и конференций
|
||||||
|
- **SQLDelight** — тип-безопасные SQL запросы для локального хранилища данных
|
||||||
|
- **Firebase Messaging** — push-уведомления
|
||||||
|
- **Coil** — загрузка и кэширование изображений
|
||||||
|
|
||||||
|
|
||||||
|
## 📥 Сборка и разработка (Android Studio)
|
||||||
|
|
||||||
|
### Требования
|
||||||
|
|
||||||
|
- Последняя версия Android Studio
|
||||||
|
- Компоненты, обновленные до последних версий
|
||||||
|
|
||||||
|
### Быстрый старт
|
||||||
|
|
||||||
|
1. **Клонируйте репозиторий:**
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/fromchat-messenger/app.git
|
||||||
|
cd app
|
||||||
|
```
|
||||||
|
2. **Сгенерируйте ключи (Debug & Release):**
|
||||||
|
1. Установите переменные (замените `CHANGEME` на ваши надежные пароли):
|
||||||
|
```bash
|
||||||
|
DEBUG_STORE_PASS=CHANGEME
|
||||||
|
DEBUG_KEY_PASS=CHANGEME
|
||||||
|
RELEASE_STORE_PASS=CHANGEME
|
||||||
|
RELEASE_KEY_PASS=CHANGEME
|
||||||
|
```
|
||||||
|
2. Выполните команды:
|
||||||
|
```bash
|
||||||
|
mkdir -p app/android/keys
|
||||||
|
|
||||||
|
keytool -genkey -v -keystore app/android/keys/debug.jks \
|
||||||
|
-keyalg RSA -keysize 2048 -validity 10000 \
|
||||||
|
-alias key0 -storepass $DEBUG_STORE_PASS -keypass $DEBUG_KEY_PASS \
|
||||||
|
-dname "CN=Debug, O=FromChat, C=RU"
|
||||||
|
|
||||||
|
keytool -genkey -v -keystore app/android/keys/release.jks \
|
||||||
|
-keyalg RSA -keysize 2048 -validity 10000 \
|
||||||
|
-alias key0 -storepass $RELEASE_STORE_PASS -keypass $RELEASE_KEY_PASS \
|
||||||
|
-dname "CN=Release, O=FromChat, C=RU"
|
||||||
|
|
||||||
|
cat > app/android/keystore.properties << EOF
|
||||||
|
releaseStorePassword=$RELEASE_STORE_PASS
|
||||||
|
releaseKeyPassword=$RELEASE_KEY_PASS
|
||||||
|
debugStorePassword=$DEBUG_STORE_PASS
|
||||||
|
debugKeyPassword=$DEBUG_KEY_PASS
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
3. **Откройте в Android Studio:**
|
||||||
|
- Выберите: `File → Open → app/`
|
||||||
|
- Android Studio автоматически загружает все зависимости и синхронизирует Gradle
|
||||||
|
4. **Запустите:**
|
||||||
|
- Нажмите `Run → Run 'Android'` (Shift+F10)
|
||||||
|
- Выберите эмулятор или подключённое устройство
|
||||||
|
|
||||||
|
### Структура проекта
|
||||||
|
|
||||||
|
```
|
||||||
|
android/
|
||||||
|
├── app/ # Код клиента
|
||||||
|
│ ├── android/ # Модуль Android-приложения
|
||||||
|
│ └── shared/ # Общий код Compose (Android + iOS)
|
||||||
|
│ ├── commonMain/ # Кроссплатформенный код
|
||||||
|
│ ├── androidMain/ # Android-специфичный код
|
||||||
|
│ └── iosMain/ # iOS-специфичный код (еще не готово)
|
||||||
|
├── utils/ # Модуль всяких полезных штук, которые можно использовать в другом проекте
|
||||||
|
│ ├── android/ # Модуль Android-библиотеки
|
||||||
|
│ └── shared/
|
||||||
|
└── gradle/libs.versions.toml # Управление зависимостями
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🤝 Внести вклад
|
||||||
|
|
||||||
|
Если вам хочется поддержать разработку проекта, просто кидайте Pull Request, я уверен, что вы это уже знаете, мне лень это расписывать.
|
||||||
|
|
||||||
|
## 📄 Лицензия
|
||||||
|
|
||||||
|
Этот проект лицензирован в соответствии с лицензией GNU Affero General Public License v3.0. Подробности см. в файле [LICENSE](./LICENSE).
|
||||||
Reference in New Issue
Block a user