Home Projects Roadmap Blog GitHub Contact
Active Android · Kotlin · Jetpack Compose

ArrTerm

A native Android client for managing self-hosted Radarr, Sonarr and Overseerr from a phone an nzb360-style app, built and shipped as a sideloaded APK.

KotlinJetpack ComposeRetrofitCoil

Objective

Build a native Android app for managing self-hosted Radarr, Sonarr and Overseerr from a phone. Server URL and API key are entered per-service at runtime rather than hardcoded, so the app isn't tied to one install. Distributed as a sideloaded debug APK rather than through the Play Store.

Current status

Seven versions shipped so far (v0.1.0 through v0.7.0), each tagged and released on a private GitHub repo with patch notes and, for most releases, an attached debug APK. Actively sideload-tested against the real homelab instances each round, with fixes coming directly out of that testing.

Architecture

Android app (Compose UI) → Retrofit / OkHttp → Radarr / Sonarr / Overseerr REST APIs

Completed work

  • Shipped an MVP covering per-service settings with encrypted API key storage, Radarr and Sonarr library/queue views, and Overseerr request approval.
  • Iterated through two full visual redesigns before landing on a design imported directly from a Claude Design project, including bundled custom typography and hand-drawn navigation icons.
  • Added real poster artwork, a consolidated Home dashboard summarising all three services, and a floating bottom navigation bar clear of the phone's gesture area.
  • Added search, status filters, and separate Library/Queue sub-tabs to the Radarr and Sonarr screens.
  • Diagnosed and fixed a subtle bug where poster images failed to load silently the image route uses a different authentication scheme than the rest of the API by preferring each item's original artwork URL instead of the gated server copy.

Risks and open items

  • Overseerr hasn't had the same round of search/filter/sub-tab polish that Radarr and Sonarr just received.
  • Several features are deliberately deferred: searching for and adding new movies or series, Overseerr's own new-request search, calendar views, notifications, and multiple profiles per service.

Next actions

  • Continue sideload-testing against real Radarr/Sonarr/Overseerr instances each round.
  • Bring Overseerr's screens up to the same level of polish as Radarr/Sonarr.
  • Revisit the deferred feature list as priorities allow.