Resident-focused native apps. Admin stays on web (team decision: admin inputs are awkward on phone UI). Surfaces: Surfaces/Mobile iOS · Surfaces/Mobile Android. Map: Features/Feature Map.

Distribution

PlatformChannelPackage
iOSTestFlightid.halort.mobile
AndroidDebug APK on www (pre–Play Store)id.halort.mobilehttps://www.halort.com/android

Both hit Surfaces/Platform API (https://api.halort.com) with the same tenant slug header pattern as web.

Login & community

  • Type community slug (e.g. gp2) — no picker list
  • Wrong slug → clear error, no crash
  • Magic link or Google
  • Magic link from email should open the app when installed (App Links / universal links), not only the web portal
  • Session persists after relaunch; logout returns to slug screen

Bottom tabs (resident)

TabCapabilities
BerandaNama warga, komunitas aktif, logo komunitas / HaloRT fallback
IuranDaftar tagihan; bayar (transfer); clear empty state if unit rumah missing (not 404)
BeritaSegments: Berita / Pengumuman / Agenda
LayananSurat · Pengaduan · Laporan · Kampanye · Pasar — bottom nav must stay visible inside sub-screens
ProfilAkun + Keluar

Layanan detail

  • Surat — jenis, atas nama, keperluan, daftar permohonan
  • Pengaduan — kategori (default Keluhan), judul/isi; list “Pengaduan saya”; optional anonim + nomor WA
  • Laporan — ringkasan kas / pengeluaran
  • Kampanye — list + Donasi (full primary button hit area)
  • Pasar — daftar iklan + Pasang Iklan (min description length enforced; full button hit area)

Push notifications

Priority value-add: admin publishes pengumuman on web → push on device → open related content / Berita. Background (not force-quit). See Testing/iOS TestFlight Checklist section F.

Sync with web

Iuran status, donasi, iklan pasar, and pengumuman should match web admin / warga after actions from the phone — see cross-check in Testing/Testing Mechanism.

Concepts/Roles and Portals · Surfaces/Design System · Testing/Android APK Checklist · Testing/iOS TestFlight Checklist