Development
Prerequisites
JDK 11+
Node.js 20+ and npm 10+
Android SDK (for Android targets)
Xcode (for iOS targets)
Project Structure
Module | Purpose |
|---|---|
| KMP shared library — data models, API client, auth state |
| Compose Multiplatform UI — Android and Desktop |
| React + TypeScript web app, consumes |
| iOS native entry point (Swift/Xcode) |
Web App
The web app (webApp/) is a Vite + React + TypeScript SPA served on port 8080. It imports domain types and API client logic from the Kotlin shared/ module via the npm workspace.
Build and run
Environment variables
All configuration is injected at runtime via webApp/public/env.js (see ADR-0006). Copy webApp/.env.example to understand the available variables; do not rely on build-time env vars.
Variable | Description | Default |
|---|---|---|
| Keycloak server URL |
|
| Keycloak realm name |
|
| Keycloak public client ID |
|
| Backend REST API base URL |
|
| Mapbox GL JS access token | (empty) |
Production build
Android
Desktop (JVM)
iOS
Open iosApp/ in Xcode and run from the IDE.
Tests
Test sources: shared/src/commonTest/, composeApp/src/commonTest/.