New app: Atrium (app.atrium)

New app: Atrium (app.atrium), an Android controller for a self-hosted media stack. Flutter, GPL-3.0-or-later. I am one of its maintainers, submitting on behalf of the team; it is our own app.

It manages Sonarr, Radarr, Prowlarr, Bazarr, Seerr, Tautulli, qBittorrent, SABnzbd, Jellyfin, Emby, Plex and Glances, all pointed at servers the user runs themselves. It is a controller, not a media player: no playback, no bundled codecs.

Building 1.0.5 at a full commit hash, reproducibly, against the APKs on the GitHub release.

Required

  • The app complies with the inclusion criteria
  • The original app author has been notified (and does not oppose the inclusion)
  • All related fdroiddata and RFP issues have been referenced in this merge request
  • Builds with fdroid build and all pipelines pass
  • There is an issue tracker and contact info of the author so that we can report bugs and contact the author.
  • The upstream app source code repo contains the app metadata (summary/description/images/changelog/etc) in a Fastlane or Triple-T folder structure
  • Releases are tagged and auto update is enabled

Suggested

  • External repos are added as git submodules instead of srclibs
  • Enable Reproducible Builds
  • Multiple apks for native code

Things worth your attention

Plex support, and why I have not declared NonFreeNet. Raising this myself rather than have it found in review. Atrium can connect to Plex, which is proprietary. It is one of twelve supported services, the other eleven are free software, and the app is fully functional with Plex never configured, so "depends entirely on a proprietary network service" does not apply. Plex here is the user's own server on their own hardware rather than a hosted account the app funnels people toward.

I am aware Spotube and Musify are tagged NonFreeNet for Spotify and YouTube, and that neither is exclusively those services either. If you read the "promote" half of the definition as covering this, I will add:

AntiFeatures:
  NonFreeNet:
    en-US: Can optionally connect to Plex, a non-free media server.

Your call, and I will not argue it. I could not find an existing Plex-supporting app in the repo to compare against.

This is a Dart pub workspace, which I think is a first here. The root pubspec declares the members, the Flutter app is in app/ with resolution: workspace, and the single tracked lockfile is at the repo root. I could not find another Flutter app in this repo using one, so subdir: app in this shape had no precedent I could point at. It does work: the build log shows pub resolving at the repo root from inside app/. Flagging it because it is unusual, not because it is unresolved.

Generated sources are built during prebuild. The freezed and json_serializable output is not tracked, so a clean checkout has none of it and tool/build_all.dart regenerates it across the workspace packages. That helper shells out to a bare dart, hence the srclib on PATH.

Artwork comes from the user's own servers. Sonarr and Radarr cache their artwork and serve it from /MediaCover, and Atrium loads it from there rather than from TheTVDB or TMDB. The exception is search results for titles not yet in the library, where the server has nothing cached. Seerr's poster URLs do still point at TMDB; that is next on my list, mentioned for completeness.

No runtime-fetching dependencies. google_fonts was removed before the first release and the only font is bundled. No analytics, no telemetry, no crash reporting, no account. dependenciesInfo is off, so the APK carries no Play Console dependency blob.

Edited by Lennox

Merge request reports

Loading