This is a multiplatform frontend for chat-backend. It is written in Kotlin and uses Ktor for networking and Compose for the UI. It runs natively on Android and iOS, desktop via the JVM, and experimentally in a web browser with WebAssembly.
The recommended JDK version for this project is OpenJDK 17. Higher versions may not work, especially in release builds due to lacking Proguard support.
To run the project on your desktop:
./gradlew :composeApp:run
To build a distributable package:
./gradlew :composeApp:createDistributable
To create a release distributable:
./gradlew :composeApp:createReleaseDistributable
The output will be in composeApp/build/compose/binaries/main/app
.
Warning
The release build of the desktop app is currently experimental, and may have issues due to the Proguard configuration.
Open the project in Android Studio and run the "Android App" configuration.
Alternatively, if you want to just build the APK and manually install it on a device, you can run:
./gradlew :composeApp:assembleRelease
or for a debug build:
./gradlew :composeApp:assembleDebug
The output will be in composeApp/build/outputs/apk
.
iOS development requires a Mac with Xcode installed. This build process is by far the most complicated one.
First, download kdoctor and run it to identify & fix any the issues with your setup.
Then open Android Studio, and either add or execute the iOS configuration.
Important
The iOS app is currently experimental and rarely tested due to not having a Mac available during regular development.
To run a development server:
./gradlew :composeApp:wasmJsBrowserDevelopmentRun
For production, you should build the site and serve it with a proper web server:
./gradlew :composeApp:wasmJsBrowserDistribution
Before logging in or registering, you need to set up the API endpoints the client should use. This can be done by opening a "secret" configuration menu, which is done by clicking the logo on the login screen 8 times in a row. After this is done, you can log in or register with the chat-backend server.
Important
The Android & iOS apps don't support API endpoints without TLS. This is because they require secure connections by default.
The recommended IDE for this project is Android Studio. There are several run configurations set up for the different platforms.
This project is licensed under GPL-3.0. See the LICENSE file for details.