# mobile/android — Centralcloud On-Call Android App

## Role

Engineer's single pane for on-call: paging, conference bridge, and agent chat.
Centrally configured — one hardcoded URL, everything else pulled from the server.

## Bootstrap

App hits `GET https://ops.centralcloud.com/api/android/config` on first launch
(bearer token from QR/deep-link setup). Receives:

```json
{
  "push_url": "https://push.infra.centralcloud.com",
  "push_topic": "oncall-<user>",
  "push_token": "...",
  "agent_url": "https://ops.centralcloud.com/chat/",
  "agent_token": "...",
  "oncall_url": "https://ops.centralcloud.com/oncall-api/",
  "bridge_url": "https://ops.centralcloud.com/bridge"
}
```

## Features

| Feature | Backend |
|---|---|
| Push alerts (DND-bypass) | oncall (`push.infra.centralcloud.com`) |
| Incident acknowledge / resolve | `centralcloud-ops` API |
| Join conference bridge | Twilio + `centralcloud-ops /bridge` |
| Chat with ops agent | `operations-agent` (hermes-agent API) |
| On-call schedule view | `centralcloud-ops /oncall-api/` → OnCall |

## Build

Kotlin + Gradle. Nix flake for reproducible builds.
Fastlane for signing + internal distribution.

```bash
nix develop
./gradlew assembleDebug
fastlane internal   # push to internal track
```

Forgejo repo: `git.infra.centralcloud.com/centralcloud/mobile-android`
CI: Forgejo Actions → builds APK → pushes to internal registry

## Notifications

oncall topic per engineer, centrally assigned.
DND-bypass requires `IMPORTANCE_MAX` notification channel — already configured.
Do NOT use Firebase Cloud Messaging — oncall is the push provider.
