Forgotten Favorites & Rediscovery Radar
What
A dedicated local intelligence module and dashboard component that analyzes local play counts, last-played timestamps, and rating history to highlight highly-rated or previously frequently played tracks and albums that have not been played in over 90–180 days.
Why
Music collectors with large Plex libraries frequently lose track of high-quality music in their collection. Musearr already mirrors play history and track metadata locally into PostgreSQL; surfacing forgotten favorites leverages existing data to deliver immediate, personalized discovery value without requiring external AI or third-party cloud connections.
Implementation
- DB/Core: Add SQL analytical queries in
packages/db (getForgottenFavoritesQuery) joining local tracks, albums, and play history/last-played timestamps.
- API: Expose a new endpoint
GET /api/v1/intelligence/rediscovery in apps/api/src/routes/intelligence.ts.
- UI: Render a "Rediscovery Radar" card and dedicated view in
apps/web/app/ allowing the user to browse forgotten tracks and optionally create a seed playlist from any rediscovery track.
Difficulty
Medium
Priority
Build now
Interactive Seed-Based Playlist Proposal & Preview Mode
What
An interactive visual workspace in the web dashboard where users can generate playlist proposals from seed tracks, preview the deterministic track list (including missing vs available status), re-order or exclude tracks, and manually trigger optional Plex sync or Lidarr acquisition.
Why
Musearr currently has a seed-based playlist planner backend in packages/intelligence, but playlist generation results are less accessible to end-users without an intuitive web dashboard interface to inspect and adjust recommendations before publishing. An interactive preview aligns directly with Musearr's "review-first, owner-consented" core philosophy.
Implementation
- UI: Build a new route
apps/web/app/playlists/new with a seed-track selector, real-time deterministic planner trigger, track list preview table, and action controls (Publish to Plex, Search Lidarr).
- API: Expand
apps/api/src/routes/playlists.ts to accept track exclusion parameters and handle explicit draft playlist saves/updates in PostgreSQL.
- Contracts: Add payload schema contracts in
packages/contracts for playlist draft previews and editing operations.
Difficulty
Medium
Priority
Build now
Sync Run Health Analytics & History Filtering
What
An upgraded sync observability view on the dashboard providing granular filtering (by status, library type, and date range), failure trend visualization, and one-click manual retry triggers for individual failed libraries.
Why
While Musearr added robust classified failure handling (sanitiseSyncFailure), power users managing large libraries need historical context to diagnose whether sync errors are recurring (e.g. transient network timeouts vs persistent schema/token issues) without parsing raw server logs.
Implementation
- API: Update
apps/api/src/routes/sync.ts with pagination and status query parameters (status=failed|completed, libraryId).
- UI: Enhance
apps/web/app/_components/sync-recovery-state.tsx and sync settings page with filter dropdowns, duration metrics, and historical run comparison.
Difficulty
Small
Priority
Build soon
Lidarr Missing Track Acquisition Dry-Run & Approval Queue
What
A review-first interface and queue for missing track acquisition. When playlist generation identifies missing tracks, instead of immediate automatic download requests, Musearr stages proposed imports in an approval queue showing confidence scores, track metadata, and Lidarr status.
Why
Automated media acquisition can pollute Lidarr libraries with unwanted releases or low-quality matches. A dry-run approval queue gives self-hosters full control over what gets requested, supporting Musearr's safety principles while seamlessly bridging local library generation with automated downloading.
Implementation
- Integrations: Add dry-run simulation mode to
packages/lidarr.
- DB: Store proposed acquisitions in a
lidarr_acquisition_queue table with status (pending, approved, rejected).
- API/UI: Create
/api/v1/lidarr/queue endpoints and a "Missing Tracks Queue" dashboard tab with batch approval actions.
Difficulty
Medium
Priority
Build soon
Scheduled & On-Demand Local Database Backup & Restore Utility
What
An automated background task and single-click admin utility in the dashboard to generate compressed PostgreSQL database snapshots (pg_dump), retain backup history, and allow quick local restores.
Why
As Musearr accumulates historical sync data, local intelligence metrics, daily briefing archives, and custom playlist drafts, losing PostgreSQL state in Docker container recreations can be frustrating for self-hosters.
Implementation
- Worker: Add a scheduled backup job in
apps/worker invoking native pg_dump to a mounted /backups volume.
- API: Endpoint
/api/v1/system/backups to list and download snapshots.
- UI: Add a "Data & Backups" tab in dashboard settings.
Difficulty
Small
Priority
Later
Customizable Daily Briefing Schedule & Multi-Channel Delivery
What
Allow users to customize the exact daily time and delivery schedule for briefing generation, with support for additional webhook notification channels (e.g., Matrix, Ntfy, or Gotify) alongside Discord.
Why
Currently, daily briefings run on a fixed background worker cron schedule and only support Discord webhooks. Expanding webhook options and customizable schedule times ensures self-hosters using non-Discord notification services receive daily briefings on their preferred platforms at their preferred times.
Implementation
- Config/DB: Add notification provider and schedule cron configuration to system settings.
- Worker: Abstract webhook delivery in
apps/worker to support generic JSON HTTP payloads (Ntfy/Gotify/Matrix).
- UI: Add briefing schedule and webhook channel selector in Settings.
Difficulty
Medium
Priority
Later
Top 3
1. Interactive Seed-Based Playlist Proposal & Preview Mode
Why this should be built next:
The core seed-based playlist generation engine and deterministic planners (packages/intelligence, packages/musicbrainz) are already implemented, but users lack an intuitive dashboard workflow to generate, inspect, modify, and confirm playlist proposals before publishing to Plex. Delivering this feature immediately unlocks the full user-facing value of the underlying playlist engine.
Implementation Plan:
- API & Contracts Expansion: Extend
packages/contracts and apps/api/src/routes/playlists.ts with endpoints to generate draft playlist proposals, fetch seed recommendations, and update proposed track lists with user exclusions.
- Dashboard UI Workspace: Create
apps/web/app/playlists/new/page.tsx featuring a search/select input for seed tracks, algorithm parameter sliders (e.g. diversity, track count), and a real-time proposal preview table.
- Track Status & Action Indicators: Display clear badges on each proposed track showing availability status (
In Library, Missing, Lidarr Queueable).
- Publishing & Integration Hooks: Add direct buttons to "Publish to Plex" (invoking
packages/plex) or "Queue Missing in Lidarr" (invoking packages/lidarr), respecting user consent settings.
- Testing & Verification: Add Vitest unit tests in
apps/api for playlist draft state management and Playwright frontend verification.
2. Forgotten Favorites & Rediscovery Radar
Reasoning:
Surfacing high-value music already owned in the user's Plex library provides instant gratification and reinforces Musearr's core identity as a local-first intelligence layer.
Implementation Outline:
- Write optimized SQL analytical queries in
packages/db filtering tracks with high ratings/historical play counts but no recent plays (last_played_at < NOW() - INTERVAL '180 days').
- Add Fastify route
/api/v1/intelligence/rediscovery returning grouped rediscovery items (Forgotten Albums, Hidden Gem Artists).
- Add a "Rediscovery Radar" widget on the Next.js home dashboard (
apps/web/app/page.tsx) with quick actions to play in Plex or seed a new playlist.
3. Sync Run Health Analytics & History Filtering
Reasoning:
Self-hosters need clarity into background synchronization reliability over time to ensure their local library mirror remains accurate and up to date.
Implementation Outline:
- Extend
packages/db sync run repository methods to support pagination, status filters, and time-range aggregations.
- Add query parameters (
status, library_id, limit) to GET /api/v1/sync/history.
- Build a filtering header and sync duration bar chart in
apps/web/app/_components/sync-recovery-state.tsx.
Best thing to build next: Interactive Seed-Based Playlist Proposal & Preview Mode
The core playlist planning backend is already functional in packages/intelligence, but lacks a user-facing preview and review interface. Building the interactive proposal UI gives users immediate hands-on control over deterministic playlist generation, turning an internal backend system into Musearr's standout feature.
Forgotten Favorites & Rediscovery Radar
What
A dedicated local intelligence module and dashboard component that analyzes local play counts, last-played timestamps, and rating history to highlight highly-rated or previously frequently played tracks and albums that have not been played in over 90–180 days.
Why
Music collectors with large Plex libraries frequently lose track of high-quality music in their collection. Musearr already mirrors play history and track metadata locally into PostgreSQL; surfacing forgotten favorites leverages existing data to deliver immediate, personalized discovery value without requiring external AI or third-party cloud connections.
Implementation
packages/db(getForgottenFavoritesQuery) joining local tracks, albums, and play history/last-played timestamps.GET /api/v1/intelligence/rediscoveryinapps/api/src/routes/intelligence.ts.apps/web/app/allowing the user to browse forgotten tracks and optionally create a seed playlist from any rediscovery track.Difficulty
Medium
Priority
Build now
Interactive Seed-Based Playlist Proposal & Preview Mode
What
An interactive visual workspace in the web dashboard where users can generate playlist proposals from seed tracks, preview the deterministic track list (including missing vs available status), re-order or exclude tracks, and manually trigger optional Plex sync or Lidarr acquisition.
Why
Musearr currently has a seed-based playlist planner backend in
packages/intelligence, but playlist generation results are less accessible to end-users without an intuitive web dashboard interface to inspect and adjust recommendations before publishing. An interactive preview aligns directly with Musearr's "review-first, owner-consented" core philosophy.Implementation
apps/web/app/playlists/newwith a seed-track selector, real-time deterministic planner trigger, track list preview table, and action controls (Publish to Plex, Search Lidarr).apps/api/src/routes/playlists.tsto accept track exclusion parameters and handle explicit draft playlist saves/updates in PostgreSQL.packages/contractsfor playlist draft previews and editing operations.Difficulty
Medium
Priority
Build now
Sync Run Health Analytics & History Filtering
What
An upgraded sync observability view on the dashboard providing granular filtering (by status, library type, and date range), failure trend visualization, and one-click manual retry triggers for individual failed libraries.
Why
While Musearr added robust classified failure handling (
sanitiseSyncFailure), power users managing large libraries need historical context to diagnose whether sync errors are recurring (e.g. transient network timeouts vs persistent schema/token issues) without parsing raw server logs.Implementation
apps/api/src/routes/sync.tswith pagination and status query parameters (status=failed|completed,libraryId).apps/web/app/_components/sync-recovery-state.tsxand sync settings page with filter dropdowns, duration metrics, and historical run comparison.Difficulty
Small
Priority
Build soon
Lidarr Missing Track Acquisition Dry-Run & Approval Queue
What
A review-first interface and queue for missing track acquisition. When playlist generation identifies missing tracks, instead of immediate automatic download requests, Musearr stages proposed imports in an approval queue showing confidence scores, track metadata, and Lidarr status.
Why
Automated media acquisition can pollute Lidarr libraries with unwanted releases or low-quality matches. A dry-run approval queue gives self-hosters full control over what gets requested, supporting Musearr's safety principles while seamlessly bridging local library generation with automated downloading.
Implementation
packages/lidarr.lidarr_acquisition_queuetable with status (pending,approved,rejected)./api/v1/lidarr/queueendpoints and a "Missing Tracks Queue" dashboard tab with batch approval actions.Difficulty
Medium
Priority
Build soon
Scheduled & On-Demand Local Database Backup & Restore Utility
What
An automated background task and single-click admin utility in the dashboard to generate compressed PostgreSQL database snapshots (
pg_dump), retain backup history, and allow quick local restores.Why
As Musearr accumulates historical sync data, local intelligence metrics, daily briefing archives, and custom playlist drafts, losing PostgreSQL state in Docker container recreations can be frustrating for self-hosters.
Implementation
apps/workerinvoking nativepg_dumpto a mounted/backupsvolume./api/v1/system/backupsto list and download snapshots.Difficulty
Small
Priority
Later
Customizable Daily Briefing Schedule & Multi-Channel Delivery
What
Allow users to customize the exact daily time and delivery schedule for briefing generation, with support for additional webhook notification channels (e.g., Matrix, Ntfy, or Gotify) alongside Discord.
Why
Currently, daily briefings run on a fixed background worker cron schedule and only support Discord webhooks. Expanding webhook options and customizable schedule times ensures self-hosters using non-Discord notification services receive daily briefings on their preferred platforms at their preferred times.
Implementation
apps/workerto support generic JSON HTTP payloads (Ntfy/Gotify/Matrix).Difficulty
Medium
Priority
Later
Top 3
1. Interactive Seed-Based Playlist Proposal & Preview Mode
Why this should be built next:
The core seed-based playlist generation engine and deterministic planners (
packages/intelligence,packages/musicbrainz) are already implemented, but users lack an intuitive dashboard workflow to generate, inspect, modify, and confirm playlist proposals before publishing to Plex. Delivering this feature immediately unlocks the full user-facing value of the underlying playlist engine.Implementation Plan:
packages/contractsandapps/api/src/routes/playlists.tswith endpoints to generate draft playlist proposals, fetch seed recommendations, and update proposed track lists with user exclusions.apps/web/app/playlists/new/page.tsxfeaturing a search/select input for seed tracks, algorithm parameter sliders (e.g. diversity, track count), and a real-time proposal preview table.In Library,Missing,Lidarr Queueable).packages/plex) or "Queue Missing in Lidarr" (invokingpackages/lidarr), respecting user consent settings.apps/apifor playlist draft state management and Playwright frontend verification.2. Forgotten Favorites & Rediscovery Radar
Reasoning:
Surfacing high-value music already owned in the user's Plex library provides instant gratification and reinforces Musearr's core identity as a local-first intelligence layer.
Implementation Outline:
packages/dbfiltering tracks with high ratings/historical play counts but no recent plays (last_played_at < NOW() - INTERVAL '180 days')./api/v1/intelligence/rediscoveryreturning grouped rediscovery items (Forgotten Albums, Hidden Gem Artists).apps/web/app/page.tsx) with quick actions to play in Plex or seed a new playlist.3. Sync Run Health Analytics & History Filtering
Reasoning:
Self-hosters need clarity into background synchronization reliability over time to ensure their local library mirror remains accurate and up to date.
Implementation Outline:
packages/dbsync run repository methods to support pagination, status filters, and time-range aggregations.status,library_id,limit) toGET /api/v1/sync/history.apps/web/app/_components/sync-recovery-state.tsx.Best thing to build next: Interactive Seed-Based Playlist Proposal & Preview Mode
The core playlist planning backend is already functional in
packages/intelligence, but lacks a user-facing preview and review interface. Building the interactive proposal UI gives users immediate hands-on control over deterministic playlist generation, turning an internal backend system into Musearr's standout feature.