Skip to content

PeopleInSpace

Kotlin Multiplatform sample with SwiftUI, Jetpack Compose, Compose for Wear, Compose for Desktop, and Compose for Web clients along with Ktor backend.

Install

$git clone https://github.com/joreilly/PeopleInSpace

Install command taken from the project's README or registry entry. Always review code before running it.

PeopleInSpace

Kotlin Multiplatform project with SwiftUI, Jetpack Compose, Compose for Wear OS, Compose for Desktop and Compose for Web clients along with Ktor backend. Currently running on

  • Android (Jetpack Compose)
  • Android App Widget (Compose based Glance API - contributed by https://github.com/yschimke)
  • Wear OS (Compose for Wear OS - primarily developed by https://github.com/yschimke)
  • iOS (SwiftUI)
  • Swift Executable Package
  • Desktop (Compose for Desktop)
  • Web (Compose for Web - Wasm based)
  • Windows (WinUI 3)
  • JVM (small Ktor back end service + Main.kt in common module)
  • MCP server (using same shared KMP code)

The people data comes from The Space Devs API (names, bios and images of the people currently in space) and the position of the International Space Station from the Where the ISS at? API, both served through this project's own small Ktor backend (see backend module below).

The project is included as sample in the official Kotlin Multiplatform docs and also the Google Dev Library

Architecture

All of the clients are thin UI layers over the same common module: the shared view models expose StateFlows of UI state, backed by a single repository that treats the local SQLDelight database as the source of truth and refreshes it from the network.

flowchart TB
    subgraph clients["Clients"]
        direction LR
        android["<b>app</b>Android · Jetpack Compose+ Glance / Remote Compose widgets"]
        wear["<b>wearApp</b>Wear OS · Compose + Tile"]
        ios["<b>PeopleInSpaceSwiftUI</b>iOS · SwiftUI (SKIE)+ SwiftExecutablePackage"]
        desktop["<b>compose-desktop</b>JVM · Compose for Desktop"]
        web["<b>compose-web</b>Kotlin/Wasm · Compose"]
        winui["<b>windows/WinUiApp</b>.NET · WinUI 3"]
        mcp["<b>mcp-server</b>JVM · Kotlin MCP SDK"]
    end

    subgraph common["common (Kotlin Multiplatform)"]
        direction TB
        cmpui["Compose Multiplatform UI<i>PersonList / ISSPosition / ISSMapView</i>(expect/actual map per platform)"]
        vm["View models<i>PersonListViewModel · ISSPositionViewModel</i>StateFlow&lt;UiState&gt;"]
        winclient["PeopleInSpaceClient<i>mingwX64, exported via NuGet</i>(no Koin / AndroidX)"]
        repo["<b>PeopleInSpaceRepository</b>offline-first: DB is source of truth,ISS position polled every 10s"]
        db[("SQLDelightPeopleInSpaceDatabase")]
        api["Ktor client APIs<i>PeopleInSpaceApi · AstroviewerApi</i>"]
        koin{{"Koin DI(annotations + compiler plugin)"}}

        cmpui --> vm
        vm --> repo
        winclient --> repo
        repo --> db
        repo --> api
        koin -.-> repo
    end

    subgraph remote["Remote"]
        direction LR
        backend["<b>backend</b>Ktor / Netty on App Engine<i>/astros.json</i>"]
        spacedevs["The Space Devs API<i>names, bios, images</i>"]
        wheretheiss["wheretheiss.at<i>current ISS position</i>"]
        astroviewer["astroviewer.net<i>predicted ISS orbit</i>"]
    end

    android --> cmpui
    wear --> repo
    ios --> cmpui
    desktop --> cmpui
    web --> cmpui
    winui --> winclient
    mcp --> repo

    api --> backend
    api --> wheretheiss
    api --> astroviewer
    backend --> spacedevs

Similar plugs

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

Never stop coding. Free MIT AI gateway: one endpoint, 359 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex,…

25 MB lightweight cross-platform database client for 100+ databases, including MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, SQL Server, and Dameng. Built-in AI, MCP…