Skip to content

Roadmap

This roadmap assumes Streamline is a single-user, self-hosted app that runs on a homeserver beside tools like Plex, Jellyfin, Radarr, and Sonarr.

Out of scope:

  • SaaS concerns
  • Multi-user profiles
  • Team or enterprise administration

These were on this roadmap and are now in the app:

  • gunicorn behind a systemd unit (streamline-web.service)
  • A Docker image (amd64 and arm64) and a Compose setup with mounted data, cache, and config
  • Password protection (STREAMLINE_PASSWORD) and CSRF protection for all write actions
  • /healthz and /status, reporting provider, models, cache counts, last profile build, IMDb refresh, and running jobs
  • A note when the taste profile is out of date
  • Result card actions: Save, Seen it, Not interested, and More like this / It was fine / Less like this
  • Watchlist page and a searchable history of past recommendations
  • Plex: plays and ratings arrive by webhook (nothing is written to Plex)
  • On Deck: followed shows with new episodes ready, and a Coming soon list
  • Home Assistant: read-only API and an iCal feed

These items should be finished before calling the app a solid homeserver release.

  • Keep the systemd unit as an optional deployment path, not the primary one
  • Support a documented reverse-proxy-auth mode for users who already protect apps at the proxy layer
  • Keep localhost-first defaults
  • Move setup, profile rebuild, and provider refresh work out of the request thread
  • Add a job status view with current state, last run time, duration, and error output
  • Stop swallowing ingestion errors silently
  • Surface source-specific failures in the UI
  • Remove shared mutable request state from the web app
  • Make usage tracking request-local instead of process-global
  • Fix startup checks so the web runner only requires keys for the configured provider
  • Add last import time and last failure to /status
  • Expose version/build information in the UI

These features make the app materially more useful for daily homeserver use.

  • Let users review and undo recent feedback from the web UI
  • Show clear result states:
    • in your library
    • available on your streaming services
    • available elsewhere
    • not currently available
  • Add an import health dashboard with last sync time, item counts, unmatched titles, and override count
  • Add a web UI for reviewing unmatched titles and editing overrides without hand-editing JSON
  • Add scheduled refresh jobs for metadata, provider availability, and taste profile rebuilds
  • Add a local “add to library” queue even before external integrations land
  • Add library gap analysis for titles that strongly fit the profile but are missing from the library

These integrations are the highest-value expansion path for a homeserver audience.

  • Jellyfin import and watch-state sync
  • Emby import and watch-state sync
  • Radarr handoff for movie recommendations
  • Sonarr handoff for series recommendations
  • Overseerr or Jellyseerr handoff for users who prefer a request workflow
  • Trakt import for users with existing watch history outside local media servers
  • Track saved titles and surface them when they become available in the local library
  • Track saved titles and surface them when they become available on configured streaming services
  1. Deployment and runtime hardening
  2. Background jobs and status visibility
  3. Library-aware recommendation states
  4. Jellyfin import
  5. Radarr and Sonarr handoff