Instantly save songs from Instagram Reels, TikTok, and YouTube directly to your Spotify library.
- ๐ฏ Instant Recognition - Identify songs from Instagram Reels, TikTok, and YouTube links
- ๐ง Direct Spotify Integration - Save songs directly to your Spotify library or playlists
- ๐ง Smart Stash - Auto-organize songs by genre into custom playlists
- ๐ Music Analytics - Track your listening habits with beautiful stats and mood boards
- ๐ฑ PWA Support - Install as an app on any device
- ๐ Dark/Light Mode - Fully responsive with theme support
- ๐ Fast & Reliable - Powered by Shazam audio fingerprinting
Get started in seconds with a pre-configured cloud development environment:
- Click the green "Code" button โ "Create codespace on main"
- Wait 3-5 minutes for automatic setup (Node.js, Python, ffmpeg, dependencies)
- Configure environment variables:
cp .env.example .env # Edit .env with your API credentials - Run the app:
# Terminal 1: Frontend npm run dev # Terminal 2: Backend python main.py
Your app will be available at the forwarded ports (5173 for frontend, 8000 for backend).
๐ก Tip: Configure Codespaces secrets for your API keys to avoid manual .env setup.
- Node.js 18+
- Python 3.11+
- Supabase account
- Spotify Developer account
- Railway account (for backend hosting)
Create a .env file in the root directory:
# Supabase
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
# Backend API
VITE_API_URL=your_railway_backend_url
# Backend (Railway)
SPOTIFY_CLIENT_ID=your_spotify_client_id
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
GEMINI_API_KEY=your_gemini_api_key
YTDLP_COOKIES=your_instagram_cookiesFrontend:
npm install
npm run devBackend:
pip install -r requirements.backend.txt
python main.py- Framework: React + TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS
- UI Components: Radix UI
- Auth: Supabase
- Hosting: Vercel
- Charts: Recharts
- Animations: Framer Motion
- Framework: FastAPI
- Audio Recognition: Shazamio (Shazam API)
- Music API: Spotify Web API (spotipy)
- Video Downloader: yt-dlp
- AI: Google Gemini (for genre detection)
- Hosting: Railway
- Connect your GitHub repo to Vercel
- Set environment variables in Vercel dashboard
- Deploy!
- Connect your GitHub repo to Railway
- Set environment variables (including Instagram cookies)
- Railway auto-deploys from
mainbranch
- Create a new Supabase project
- Enable Spotify OAuth provider
- Add redirect URLs:
https://yourdomain.vercel.app/**https://your-supabase-url.supabase.co/auth/v1/callback
- Create
historytable (auto-created via Supabase migrations)
- Create a new app at https://developer.spotify.com/dashboard
- Add Redirect URIs:
https://yourdomain.vercel.apphttps://your-supabase-url.supabase.co/auth/v1/callback
- Copy Client ID and Secret to environment variables
- Visit https://stashyourmusic.vercel.app
- Login with Spotify
- Paste an Instagram Reel, TikTok, or YouTube link
- Click "Stash" - song is instantly saved to your library!
- Visit site on mobile browser
- "Add to Home Screen"
- Share reels directly from Instagram โ "Stash" app
- Song recognizes and saves automatically!
For Instagram Reels to work, you need to provide cookies:
- Install "Get cookies.txt LOCALLY" browser extension
- Visit instagram.com while logged in
- Export cookies
- Add to Railway as
YTDLP_COOKIESenvironment variable
For scaling: Add multiple cookie sets as YTDLP_COOKIES_1, YTDLP_COOKIES_2, etc.
See INSTAGRAM_COOKIES_GUIDE.md for detailed instructions.
Automatically organizes songs by genre into themed playlists like "Stash: Techno", "Stash: Pop", etc.
- Free tier: 10 songs/day per IP
- Protects against abuse
- Ready for premium tier implementation
- Songs stashed this week
- Current listening streak
- Top genres and artists
- Beautiful mood board visualizations
stash/
โโโ src/
โ โโโ components/ # React components
โ โโโ lib/ # API & utilities
โ โโโ ...
โโโ api/ # Backend (Railway)
โโโ public/ # Static assets
โโโ main.py # Backend entry point
src/App.tsx- Main app logicsrc/lib/api.ts- Frontend API clientapi/index.py- Backend FastAPI routesmain.py- Backend server
- Verify Supabase redirect URLs include
/**wildcard - Check Spotify Developer Dashboard redirect URIs
- Clear browser cache and try incognito mode
- Check if cookies are expired (refresh every ~90 days)
- Verify
YTDLP_COOKIESis set in Railway - Public posts should work without cookies
- Check Railway logs for specific errors
- Verify all environment variables are set
- Ensure ffmpeg is installed (auto-installed in Docker)
MIT License - see LICENSE file for details.
- Shazam for audio fingerprinting
- Spotify for their amazing API
- Supabase for auth infrastructure
- Vercel & Railway for hosting
- Live Demo: https://stashyourmusic.vercel.app
- Backend API: https://stash-production-ed8d.up.railway.app
- Report Issues: GitHub Issues
Made with โค๏ธ for music lovers everywhere