Simplify server config screen

This commit is contained in:
2026-07-15 23:57:03 +03:00
Unverified
parent d92f518d87
commit a633321f17
11 changed files with 452 additions and 425 deletions
+92 -76
View File
@@ -2,120 +2,136 @@ 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.
FromChat is a 100% free and open-source messenger. This repository is the cross-platform client (Android + iOS; iOS is not ready yet).
[📥 Download](https://github.com/fromchat-messenger/app/releases/latest) • [💬 Telegram Channel](https://t.me/fromchat_ch) • [🖥️ Server](https://github.com/fromchat-messenger/backend)
[📥 Download](https://github.com/fromchat-messenger/android/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
- **Voice and video calls** — LiveKit
- **Screen sharing** during calls
- **Public chat** — server-wide community
- **Direct messages** — legal encryption scheme; server-side E2EE planned
- **Device management** — active sessions
- **Dark mode** by default
- **Open source**
## 📊 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.
⚠️ **iOS is temporarily not supported** (Apple constraints and development cost). It will ship later.
| Feature | Android | Web | iOS |
| --- | --- | --- | --- |
| **Messaging and profiles** | ✅ | ✅ | |
| **Voice/video calls** | ✅ | | ❌ |
| **Screen sharing** | ✅ | | ❌ |
| **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
- **Kotlin**
- **Compose Multiplatform**
- **Material Design 3**
- **Ktor Client**
- **LiveKit** — calls
- **SQLDelight** — local storage
- **Firebase Messaging** — push
- **Coil** — images
---
## 📥 Build and Development (Android Studio)
### Requirements
- Latest version of Android Studio
- Components updated to the latest versions
- Latest Android Studio
- JDK from Android Studio (JetBrains Runtime)
### Quick Start
### Quick start
1. **Clone the repository:**
```bash
git clone https://github.com/fromchat-messenger/app.git
cd app
```
```bash
git clone https://github.com/fromchat-messenger/android.git
cd android
```
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"
```bash
DEBUG_STORE_PASS=CHANGEME
DEBUG_KEY_PASS=CHANGEME
RELEASE_STORE_PASS=CHANGEME
RELEASE_KEY_PASS=CHANGEME
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"
mkdir -p app/android/keys
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
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"
### Project Structure
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:** `File → Open` → repo root. Gradle syncs dependencies automatically.
4. **Run:** `Run → Run 'Android'` (or the app debug configuration).
Debug application id: `ru.fromchat.beta`.
### CLI build
```bash
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
./gradlew :app:shared:compileAndroidMain :app:android:assembleDebug
```
APK: `app/android/build/outputs/apk/debug/android-debug.apk`.
### 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
├── app/
│ ├── android/ # Android app module
│ └── shared/ # Compose Multiplatform
│ ├── commonMain/
│ ├── androidMain/
│ └── iosMain/ # not ready yet
├── utils/ # reusable utilities
│ ├── android/
│ └── shared/
└── gradle/libs.versions.toml
```
Code style: [CODE_STYLE.md](./CODE_STYLE.md).
---
## 🤝 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.
Pull requests are welcome. For large changes, follow `CODE_STYLE.md`.
## 📄 License
This project is licensed under the GNU Affero General Public License v3.0. For details, see the [LICENSE](./LICENSE) file.
GNU Affero General Public License v3.0 — see [LICENSE](./LICENSE).
## 🔗 Related Repositories
- [Backend](https://github.com/fromchat-messenger/backend)
- [Web](https://github.com/fromchat-messenger/web)
- [Website](https://github.com/fromchat-messenger/site)
- [Deployment](https://github.com/fromchat-messenger/deployment)