Commit Graph

36 Commits

Author SHA1 Message Date
root
99ca2ff7cc Remove MusicBrainz/YT verification (async greenlet conflict), use direct YouTube Music search links 2026-03-31 16:14:42 -05:00
root
a0d9f1f9d9 Add live logs to admin dashboard with level filtering and error middleware 2026-03-31 15:54:21 -05:00
root
40322e8861 Add admin dashboard page with usage stats, user breakdown, admin-only nav 2026-03-31 15:43:58 -05:00
root
cc8bb0dd09 Add admin stats endpoint for usage tracking 2026-03-31 13:49:18 -05:00
root
fcca23e3ca Exclude queried artists from recommendations - only suggest new artists 2026-03-31 10:41:28 -05:00
root
51040e3723 Fix Discover: auto-scroll to results, improve mobile layout 2026-03-31 10:34:49 -05:00
root
75ca5fff64 Fix Discover page: stringify IDs for Set comparisons, show result count 2026-03-31 10:22:07 -05:00
root
85d4210a21 Switch to MusicBrainz for song verification, YouTube Music for playback links 2026-03-31 10:15:32 -05:00
root
9f9f9581d6 Verify all recommendations against YouTube Music - no more hallucinated songs, direct YT Music links 2026-03-31 10:12:37 -05:00
root
152f217675 Add Bandcamp discovery via public API (no scraping) - browse new releases by genre tag 2026-03-31 09:58:28 -05:00
root
be30a47bbb Remove Bandcamp scraping (TOS violation), use YouTube links for all recommendations 2026-03-31 09:51:20 -05:00
root
ccb49aa693 Fix login redirect: load user before navigating to dashboard 2026-03-31 09:47:32 -05:00
root
240032d972 Add Bandcamp/YouTube links on all recs, Fix My Playlist, configurable rec count
- Bandcamp: match artist+song, fall back to artist-only page
- YouTube fallback: if not on Bandcamp, link to YouTube music video search
- Fix My Playlist: AI analyzes playlist, finds outliers, suggests replacements
- User chooses recommendation count (5, 10, 15, 20)
2026-03-31 08:45:02 -05:00
root
47ab3dd847 Add Fix My Playlist feature
New endpoint POST /api/playlists/{id}/fix that analyzes a playlist
using Claude AI to identify outlier tracks that don't match the
overall vibe, and suggests better-fitting replacements.

Frontend shows results with warm amber cards for outliers and green
cards for replacements, with dismissible suggestions and visual
highlighting of flagged tracks in the track list.
2026-03-31 08:43:20 -05:00
root
cf2d8019bb Fix playlists API: disable redirect_slashes, fix route path for Vite proxy 2026-03-31 01:08:45 -05:00
root
018f5f23cb Fix YouTube Music import: isolate sync ytmusicapi from async DB session 2026-03-31 00:58:01 -05:00
root
50e9b492d5 Fix YouTube Music import (run sync ytmusicapi in thread), remove all Spotify UI 2026-03-31 00:30:55 -05:00
root
1eea237c08 Add discovery modes, personalization controls, taste profile page, updated pricing
- Discovery modes: Sonic Twin, Era Bridge, Deep Cuts, Rising Artists
- Discovery dial (Safe to Adventurous slider)
- Block genres/moods exclusion
- Thumbs down/dislike on recommendations
- My Taste page with Genre DNA breakdown, audio feature meters, listening personality
- Updated pricing: Free (5/week), Premium ($6.99/mo), Family ($12.99/mo coming soon)
- Weekly rate limiting instead of daily
- Alembic migration for new fields
2026-03-31 00:21:58 -05:00
root
789de25c1a Remove Listen page, tighten Bandcamp matching to 75%+ artist similarity 2026-03-31 00:10:15 -05:00
root
1efa5cd628 Verify Bandcamp results match the actual artist/track before including 2026-03-30 23:56:17 -05:00
root
c6a82cf9d9 Bandcamp mode: only return artists verified on Bandcamp, request 15 and filter to 5 2026-03-30 23:50:02 -05:00
root
44eab20614 Make Bandcamp mode opt-in toggle on Discover page 2026-03-30 23:44:04 -05:00
root
37fccc6eef Wire Bandcamp into AI recommendations - prioritize indie artists, attach Bandcamp links to results 2026-03-30 23:42:03 -05:00
root
dd4df6a070 Add Bandcamp search and Listening Room page
Implement Bandcamp search service with autocomplete API and HTML
scraping fallback. Add /api/bandcamp/search and /api/bandcamp/embed
endpoints. Create Listening Room page with search, embedded player,
and queue management. Add navigation entry and Bandcamp link on
recommendation cards.
2026-03-30 23:38:14 -05:00
root
3303cd1507 Fix Docker Compose: add PYTHONPATH for Alembic, use port 8100, fix Vite proxy for container networking 2026-03-30 23:06:52 -05:00
root
90945932ad Add Last.fm import support
Users can import their top tracks from Last.fm by entering their username.
No OAuth required - uses the public Last.fm API with user.getTopTracks and
user.getInfo endpoints. Includes a preview feature to verify the username
and see sample tracks before importing. Supports configurable time periods
(all time, 7 days, 1/3/6/12 months). Free tier playlist limit enforced.
2026-03-30 22:49:13 -05:00
root
d0ab1755bb Add paste-your-songs manual import feature
Users can now paste a list of songs as text to create a playlist without
needing any service integration. Supports multiple formats: "Artist - Title",
"Title by Artist", "Artist: Title", and numbered lists. Includes a live
song count preview in the modal and free tier playlist limit enforcement.
2026-03-30 22:48:35 -05:00
root
f799a12ed5 Add local dev setup guide and .env, fix defaults for local development 2026-03-30 22:08:39 -05:00
root
234a914480 Add launch checklist with accounts, legal, and infrastructure steps 2026-03-30 22:06:13 -05:00
root
93c0ba81d3 Set deepcutsai.com as production domain 2026-03-30 21:59:58 -05:00
root
cef7d576d4 Add production deployment config, Alembic migration, switch to Haiku
- Production Docker Compose with Caddy reverse proxy, Gunicorn, Nginx
- Multi-stage frontend build for production
- Deploy script and automated database backup script
- Initial Alembic migration with all tables
- Switch recommendation model from Sonnet to Haiku for cost efficiency
2026-03-30 21:40:16 -05:00
root
b97955d004 Add Stripe subscription billing integration
- Add stripe_customer_id and stripe_subscription_id fields to User model
- Add Stripe config settings (secret key, publishable key, price ID, webhook secret)
- Create billing API endpoints: checkout session, webhook handler, portal, status
- Add frontend Billing page with upgrade/manage subscription UI
- Add billing route and Pro nav link
- Add stripe dependency to requirements
2026-03-30 21:38:40 -05:00
root
58c17498be Add YouTube Music playlist import support
- Add ytmusicapi dependency for fetching public YouTube Music playlists
- Create youtube_music service with playlist fetching and track search
- Add /api/youtube-music/import and /api/youtube-music/search endpoints
- Add importYouTubePlaylist and searchYouTubeMusic API client functions
- Update Playlists page with YouTube Music import button and URL input modal
2026-03-30 21:33:27 -05:00
root
cd88ed2983 Revise architecture doc to reflect actual data pipeline (Spotify audio features + LLM) 2026-03-30 16:09:13 -05:00
root
32f7dca1c9 Add audio analysis architecture doc with Essentia pipeline design 2026-03-30 16:06:57 -05:00
root
155cbd1bbf Initial MVP: full-stack music discovery app
Backend (FastAPI):
- User auth with email/password and Spotify OAuth
- Spotify playlist import with audio feature extraction
- AI recommendation engine using Claude API with taste profiling
- Save/bookmark recommendations
- Rate limiting for free tier (10 recs/day, 1 playlist)
- PostgreSQL models with Alembic migrations
- Redis-ready configuration

Frontend (React 19 + TypeScript + Vite + Tailwind):
- Landing page, auth flows (email + Spotify OAuth)
- Dashboard with stats and quick discover
- Playlist management and import from Spotify
- Discover page with custom query support
- Recommendation cards with explanations and save toggle
- Taste profile visualization
- Responsive layout with mobile navigation
- PWA-ready configuration

Infrastructure:
- Docker Compose with PostgreSQL, Redis, backend, frontend
- Environment-based configuration
2026-03-30 15:53:39 -05:00