# Building a Robot Diagnostics Dashboard with Kotlin and Compose

> Source: <https://dev.to/vmodal_ai/building-a-robot-diagnostics-dashboard-with-kotlin-and-compose-2mlp>
> Published: 2026-09-25 20:31:40+00:00

In this tutorial, you will build a practical Kotlin/Android component for a robotics or Physical AI system. The design emphasizes asynchronous processing, lifecycle-aware state, real-time data handling, observability, and safe separation between the Android interface and physical robot control.

```
Android Kotlin + Jetpack Compose
             ↓
       ViewModel / Flow
             ↓
      Repository / API
             ↓
   ROS 2 / Jetson / AI Backend
             ↓
        Robot System
data class Diagnostics(
    val connected: Boolean,
    val battery: Float,
    val temperature: Float,
    val cpu: Float,
    val gpu: Float,
    val lastMessageMs: Long
)
private val _diagnostics =
    MutableStateFlow(Diagnostics(false, 0f, 0f, 0f, 0f, 0))
@Composable
fun DiagnosticCard(title: String, value: String) {
    Card {
        Column(Modifier.padding(12.dp)) {
            Text(title)
            Text(value)
        }
    }
}
val stale =
    System.currentTimeMillis() - state.lastMessageMs > 3000
```

Store structured events such as connection changes, model failures, sensor errors, and watchdog activations.

For production systems, allow diagnostics to be exported for support and debugging, while avoiding sensitive information.

`StateFlow` for observable UI state.
The resulting Kotlin layer can be extended with real ROS 2 bridges, NVIDIA Jetson services, computer vision models, smart-glasses SDKs, or multimodal AI backends. Keep hardware-specific code behind interfaces so the Android application remains maintainable as the robotics stack evolves.

Website: [www.v-modal.com](http://www.v-modal.com)

SDK Flutter: [https://github.com/v-modal/vmodal_sdk_flutter](https://github.com/v-modal/vmodal_sdk_flutter)

SDK Android: [https://github.com/v-modal/vmodal_sdk_android](https://github.com/v-modal/vmodal_sdk_android)

Discord: [https://discord.gg/K72z28KUx](https://discord.gg/K72z28KUx)
