- Discover Your Music Journey - Transform your Last.fm listening history into an engaging countdown experience
- Personalized Countdowns - Generate rankings from your actual listening data across different time periods
- Immersive Audio Experience - Listen to track previews with fade transitions between songs
- Voice-Guided Discovery - Automated narration introduces each track as it plays
- Flexible Time Ranges - Explore your top tracks from the past week to all-time favorites
- Visual Music Experience - Switch between compact list view and full-screen album art display
- Instant Access - Click through to listen to full tracks on Deezer
- Works Everywhere - Fully responsive design for desktop, tablet, and mobile
- Frontend: React 18 + Vite + Tailwind CSS
- Backend: Vercel API Routes (serverless)
- Audio: HTML5 Audio + Web Speech API
- APIs: Last.fm + Deezer (with rate limiting & caching)
- Features: Token bucket rate limiting, 5-min caching, CORS handling
- Node.js 18+ and npm
- Free Last.fm API key
-
Clone and install:
git clone <repository-url> cd audio-fm npm install
-
Get Last.fm API key:
- Visit Last.fm API
- Create account → Request API key
- Copy your key
-
Configure environment:
# Copy example env file cp .env.example .env # Edit .env with your values
-
Start development:
npm run dev
-
Open browser:
http://localhost:3000
- Enter Username - Any public Last.fm user
- Select Time Range - 7 days, 1 month, 3 months, 6 months, 12 months, or all time
- Choose Track Count - Up to 50 tracks
- Start Countdown - Enjoy your personalized music journey!
- Serverless Functions - Vercel Edge Runtime
- Rate Limiting - Token bucket (60 requests burst, 15/sec refill)
- Caching - 5-minute in-memory cache
- CORS - Configured for production
- User-Agent - Compliant with Last.fm requirements
- React Router - Multi-page navigation
- API Services - Modular Last.fm + Deezer integration
- Audio Engine - Custom fade effects and playback management
- Responsive UI - Mobile-first Tailwind design
What We Do:
- Stream 30-second previews only
- Full attribution to Last.fm and Deezer
- Sequential playback (voice → music)
- Direct links to official platforms
- No downloads or file storage
What We Don't Do:
- Download or save audio files
- Mix voice with music simultaneously
- Commercial redistribution
- Cache preview URLs (Deezer ToS)
The app is deployed on Vercel with automatic deployments from the main branch.
Required environment variable in your Vercel project:
VITE_LASTFM_API_KEY=your_lastfm_api_key
- Click the "Deploy with Vercel" button
- Set up required environment variables
- Deploy!
- Fork the repository
- Create feature branch:
git checkout -b feature-name
- Make changes and test thoroughly
- Submit pull request with clear description
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- Track Data: Last.fm API
- Audio Previews: Deezer API
- Icons: Heroicons
Independent project • Not affiliated with Last.fm or Deezer • Built for music lovers