Skip to Content
InfraWeb migration plan

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=prod

Deployment

See .github/workflows/publish-wasm-release.yml for the CI/CD workflow that builds the WASM app and syncs it to GCS.