How joejamal029/playlist-haven works
Playlist Haven is a browser-based music-curation workspace for organizing playlists, processing discovery intake, and shaping a long-term listening library. Users enter through the dashboard and select focused tools; the documented lifecycle moves from discovery and playlist comparison into triage, language grouping, metadata repair, and resequencing, then into listening-history-driven Sonic Sieve rotations. Other tools support acoustic analysis, consensus gathering, and visual playlist creation. The README documents capabilities beyond the sampled source, so those are shown as product modules without speculative wiring; edges reflect only visible dispatches and sampled service calls.
Main entry points: App.tsx Dashboard · triageEngine.ts Triage engine · metadataEnrichmentEngine.ts Metadata enrichment · classificationEngine.ts Classification engine
Components 31
Workspace
- Dashboard
App.tsx
Discovery
- Playlist manipulator
views/PlaylistManipulatorView.tsx - Playlist matcher
views/PlaylistMatcherView.tsx - Playlist merger
views/PlaylistMergerView.tsx - Playlist splitter
views/PlaylistSplitterView.tsx - Playlist randomizer
views/PlaylistRandomizerView.tsx - Appearance tools
views/PlaylistAppearanceView.tsx - Scrape stripper
views/ScrapeStripperView.tsx - Vision to playlist
views/VisionToPlaylistView.tsx - Consensus aggregator
views/ConsensusAggregatorView.tsx - Consensus engine
services/consensusEngine.ts - AI and vision service
services/visionEngine.ts
Ingestion
- Discovery triage
views/DiscoveryTriageView.tsx - Triage engine
services/triageEngine.ts - Language clustering
views/LanguageClusteringView.tsx - Classification engine
services/classificationEngine.ts - Area dictionary
services/areaDictionary.ts - Deep enrichment
views/DeepMetadataEnrichmentView.tsx - Metadata enrichment
services/metadataEnrichmentEngine.ts - Metadata store
services/metadataDb.ts - Playlist resequencer
views/PlaylistResequencerView.tsx - Resequencer engine
services/resequencerEngine.ts
Experience and analysis
- Sonic Sieve
views/SonicSieveView.tsx - Sieve worker
sieve.worker.ts - Audimote
views/AudimoteView.tsx - Audimote engine
services/audimoteEngine.ts - Audio analysis worker
workers/audimote.worker.ts - Audio preview context
components/AudioPreviewContext.tsx - iTunes API service
services/itunesApi.ts - Sieve engine
services/sieveEngine.ts
Other components
- Curator
Connections 26
- Curator → Dashboard: opens
- Dashboard → Sonic Sieve: dispatches
- Dashboard → Playlist merger: dispatches
- Dashboard → Playlist splitter: dispatches
- Dashboard → Playlist randomizer: dispatches
- Dashboard → Playlist matcher: dispatches
- Dashboard → Scrape stripper: dispatches
- Dashboard → Language clustering: dispatches
- Dashboard → Discovery triage: dispatches
- Triage engine → Classification engine: reads and initializes
- Triage engine → Metadata store: resolves and saves
- Triage engine → AI and vision service: reads config
- Triage engine → Classification engine: classifies
- Triage engine → Resequencer engine
- Metadata enrichment → Metadata store: reads cache
- Metadata enrichment → Classification engine: reads cache
- Metadata enrichment → AI and vision service: reads config
- Metadata enrichment → iTunes API service: supplements tracks
- Classification engine → Area dictionary: resolves areas
- Resequencer engine → Triage engine: parses and normalizes
- Consensus engine → AI and vision service: uses AI services
- Sieve worker → Sieve engine: uses processing helpers
- Audimote engine → Audio analysis worker: sends audio data
- Audimote engine → Metadata store: loads and saves profiles
- Audimote engine → iTunes API service: resolves previews
- Audio preview context → iTunes API service: resolves previews