Live App: https://guessthattune.com
Guess That Tune is an interactive music quiz web application that challenges your knowledge of popular artists and their songs. The app provides an engaging experience where users can:
- Search for any artist or band
- Listen to 30-second song previews
- Select the correct song title from multiple options
- Get immediate feedback on their answers
- View their final score at the end of the quiz
Songs are played randomly from the artist's discography, ensuring a fresh experience with each playthrough.
- Artist Search: Find any artist or band in the Deezer database
- Dynamic Quiz Generation: Automatically generates quiz questions based on the selected artist
- Music Playback: Plays 30-second clips from the artist's songs
- Multiple Choice: Choose from 4 possible song titles
- Score Tracking: Keep track of correct answers
- Responsive Design: Works on desktop and mobile devices
- Visual Feedback: Colorful interface to indicate correct/incorrect answers
- Frontend Framework: Nuxt.js v3.17.5
- State Management: Pinia v3.0.3
- Styling: Tailwind CSS v4.1.x
- API Integration: Cloudflare Workers proxy to Deezer API
- Deployment: Vercel/Netlify/Custom
- Node.js v16+
- NPM or Yarn
-
Clone the repository:
git clone https://github.com/mattgrah-am/guessThatTune.git
cd guessThatTune
-
Install dependencies:
npm install
-
Run the development server:
npm run dev
-
Open your browser and visit:
http://localhost:3000
Create a .env file in the root directory with the following variables:
DEEZER_API_URL=https://api.deezer.com
NUXT_PUBLIC_API_BASE=https://your-cloudflare-worker-url.workers.dev
The project structure follows Nuxt 3 conventions:
components/- Vue componentspages/- Application routesstores/- Pinia storesserver/- Server API routesassets/- Static assetspublic/- Public files
-
Development server:
npm run dev
-
Build for production:
npm run build
-
Preview production build:
npm run preview
The application uses Cloudflare Workers to proxy requests to the Deezer API, avoiding CORS issues and protecting API keys. The core endpoints used are:
/api/search- Search for artists/api/tracklist- Get tracks from an artist
-
Create a production build:
npm run build
-
The output will be generated in the
.outputdirectory -
Deploy to your preferred hosting platform:
- Vercel, Netlify, Cloudflare Pages - Connect to your Git repository
- Custom hosting - Upload the
.outputdirectory to your server
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Deezer API for providing music data
- Nuxt.js for the excellent Vue framework
- Tailwind CSS for the utility-first CSS framework
- Pinia for state management