Full namespace + token rename across the entire fork. Greenfield, no
backwards-compatibility aliasing.
Package rename
io.heckel.ntfy.* → com.centralcloud.oncall.*
- 71 .kt + 3 .java + 2 .xml + 1 .gradle file contents rewritten
- source tree moved under app/src/{main,play,fdroid}/java/com/centralcloud/oncall/
- namespace updated in app/build.gradle
- Room schema dir app/schemas/io.heckel.ntfy.* removed (regenerates)
Token sweep
Ntfy/NTFY/ntfy → Oncall/ONCALL/oncall in all code/resource files,
including Japanese translations.
Affected: log-tag constants (NtfyApplication, NtfyMainActivity, ...),
BroadcastService SEND_MESSAGE / CONNECTION_ALERT_* action names,
translated string resources mentioning ntfy.
URL hostnames
ntfy.sh → oncall.hugo.dk
docs.ntfy.sh → docs.oncall.hugo.dk
ntfy.hugo.dk → oncall.hugo.dk
ntfy.example.com, ntfy.ejemplo.es, ntfy.exemple.cat, ntfy.exemplo.com.br,
ntfy.exemplo.pt → oncall.* equivalents (i18n example URLs)
Deep-link scheme
ntfy:// → oncall://
Backup format
FILE_MAGIC "ntfy2586" → "oncall26" (greenfield, no existing backups to read)
Verified: zero matches for /ntfy/i across the entire source tree, gradle
files, resources, and AGENTS.md.
DNS reminder: app_base_url default is now https://oncall.hugo.dk — point
that DNS record at the same server as ntfy.hugo.dk (or update the
default in BuildConfig if you prefer a different hostname).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1.6 KiB
1.6 KiB
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:
{
"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.
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.