diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..969a5bd --- /dev/null +++ b/README.en.md @@ -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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..fade9b6 --- /dev/null +++ b/README.md @@ -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). \ No newline at end of file