e36d97760a782e39edee6217a00036de7e013a32
CI / build (push) Canceled after 0s
Hesychia Android (native)
Kotlin + Jetpack Compose client for Hesychia, reusing chat_backend APIs.
Epic: chat_web_app#111
Capacitor WebView shell remains in chat_web_app/llm-fe as the interim Play track — see docs/ADR-002-capacitor-coexistence.md.
Stack
- Kotlin, Jetpack Compose, Material 3
- Hilt, Navigation Compose, DataStore
- Retrofit + OkHttp (+ WebSocket next)
- RevenueCat Android SDK (IAP Workstream E)
- Min SDK 23 / target SDK 35
- Application id:
ai.hesychia.chat
Docs
| Doc | Purpose |
|---|---|
| ADR-001 | Architecture choices |
| ADR-002 | Play id + Capacitor sunset |
| SCREEN_INVENTORY | Routes / flows to mirror |
| OPEN_QUESTIONS | Spike leftovers |
| design-tokens/hesychia.tokens.json | Shared visual tokens |
Prerequisites
- JDK 17+
- Android SDK Platform 35 + build-tools
- Android Studio (Ladybug+) recommended
- Set
sdk.dirinlocal.properties(gitignored), or open once in Android Studio
sdk.dir=/path/to/Android/Sdk
Build
./gradlew :app:assembleProdDebug
./gradlew :app:testProdDebugUnitTest
# APK → app/build/outputs/apk/prod/debug/
Flavors:
| Flavor | REST / WS | applicationId |
|---|---|---|
prod (default) |
production chatbackend.aimloperations.com |
ai.hesychia.chat (+ .debug for debug) |
beta |
beta.chatbackend.aimloperations.com |
ai.hesychia.chat.beta (+ .debug) |
Signing (release)
Never commit keystores. Create keystore.properties (gitignored) at repo root:
storeFile=/absolute/path/to/aiml-chat-upload.jks
storePassword=...
keyAlias=aiml-chat-upload
keyPassword=...
./gradlew :app:bundleProdRelease
Monetization
Native Play uses RevenueCat only (no Stripe Checkout). Align with chat_web_app/llm-fe/MONETIZATION.md:
appUserID= Django user pk string- Provider badge:
revenuecat+PLAY_STORE
Related repos
chat_web_app— product / Capacitor / design sourcechat_backend— REST + WS + RevenueCat webhooks- Future:
chat_ios(SwiftUI twin epic)
Languages
Kotlin
100%