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 buildand all pipelines pass - There is an issue tracker and contact info of the author so that we can report bugs and contact the author.
Strongly Recommended
- 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.