Files
chat_android/README.md
T

2.3 KiB

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.dir in local.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
  • chat_web_app — product / Capacitor / design source
  • chat_backend — REST + WS + RevenueCat webhooks
  • Future: chat_ios (SwiftUI twin epic)