Web Frontend: Compose Multiplatform WASM
Note: This supersedes the earlier Kotlin/JS → TypeScript migration plan. The web frontend is now built with Compose Multiplatform targeting WASM, sharing 100% of business logic and UI with desktop/Android/iOS.
Current Architecture
See web-client.md for the full documentation.
Quick Summary
Instead of rewriting the frontend in TypeScript React, the project now uses Compose Multiplatform for WASM, which compiles the same Kotlin UI code directly to WebAssembly. This means:
- Zero duplicate code — same
shared/module, same ViewModels, same Compose UI - Same feature set — everything that works on desktop works in the browser
- Faster development — no need to reimplement features in TypeScript
Build Commands
# Dev
./gradlew :composeApp:wasmJsBrowserDevelopmentRun
# Prod
./gradlew :composeApp:wasmJsBrowserDistribution -Poter.release=true -Poter.flavor=prodDeployment
See .github/workflows/publish-wasm-release.yml for the CI/CD workflow
that builds the WASM app and syncs it to GCS.