Judge My Taste.
Cooked. is a Next.js application that uses Artificial Intelligence to ruthlessly roast your music listening history. By integrating with Spotify and YouTube, it analyzes your top artists and liked videos, sending the data to Google's Gemini AI to generate a sarcastic, brutal, and comedic assessment of your personality.
- Dual Integration: Connects with both Spotify (User Top Read) and YouTube (ReadOnly) to gather data.
- Gemini 1.5 Flash: Utilizes Google's latest lightweight model with custom prompting for maximum snark.
- Unfiltered Mode: Custom safety setting overrides allow the AI to actually "roast" without holding back.
- Brutalist UI: A dark, industrial aesthetic featuring pixel typography (Bitcount) and glassmorphism.
- Fluid Animations: Interactive background blobs powered by Framer Motion that react to mouse movement.
- Transient Processing: User data is processed in-memory and never stored in a database.
- Framework: Next.js 14 (App Router)
- Styling: Tailwind CSS
- Animations: Framer Motion
- AI Model: Google Gemini API (
@google/generative-ai) - Authentication: OAuth 2.0 (Custom implementation for Spotify & Google)
- Deployment: Netlify
git clone [https://github.com/your-username/cooked.git](https://github.com/your-username/cooked.git)
cd cookednpm install
# Ensure you have the specific AI and Animation libraries
npm install framer-motion @google/generative-aiCreate a .env.local file in the root directory. You will need API credentials from Spotify Developers, Google Cloud Console, and Google AI Studio.
# .env.local
# Spotify Configuration
SPOTIFY_CLIENT_ID="your_spotify_id"
SPOTIFY_CLIENT_SECRET="your_spotify_secret"
# Google/YouTube Configuration
GOOGLE_CLIENT_ID="your_google_cloud_id"
GOOGLE_CLIENT_SECRET="your_google_cloud_secret"
# Gemini AI (The Brain)
GEMINI_API_KEY="your_gemini_api_key"
# Redirect URIs (MUST match your dashboard settings)
# For Localhost:
REDIRECT_URI="http://localhost:3000/api/callback"
GOOGLE_REDIRECT_URI="http://localhost:3000/api/callback-youtube"#For Production (Netlify):
REDIRECT_URI="[https://your-site.netlify.app/api/callback](https://your-site.netlify.app/api/callback)"
GOOGLE_REDIRECT_URI="[https://your-site.netlify.app/api/callback-youtube](https://your-site.netlify.app/api/callback-youtube)"npm run devOpen http://localhost:3000 with your browser to see the result.
To make the logins work, you must whitelist your Redirect URIs in the respective developer portals.
- Create an App.
- Edit Settings -> Redirect URIs.
- Add:
http://localhost:3000/api/callback(and your Production URL).
- Create a Project.
- Enable YouTube Data API v3.
- Create OAuth 2.0 Credentials.
- Authorized Redirect URIs:
http://localhost:3000/api/callback-youtube(and your Production URL). - Note: While in testing, you must manually add tester emails to the "OAuth Consent Screen" section, or the login will fail with a 403 error.
src/
├── app/
│ ├── api/ # Backend Routes
│ │ ├── login/ # Spotify Auth Start
│ │ ├── callback/ # Spotify Auth End
│ │ ├── roast/ # Gemini AI Logic
│ │ └── ... # YouTube routes
│ ├── roast/ # The Result Page
│ ├── privacy/ # Privacy Policy
│ ├── globals.css # Global Styles & Noise Texture
│ ├── layout.js # Root Layout
│ └── page.js # Landing Page (Home)
├── components/
│ └── FluidBackground.js # The floating blob animation
└── fonts/ # Local font files (Bitcount/Silkscreen)
available at Privacy & Policy page
- Data Handling: This app specifically uses a "Transient" data approach. It fetches your data, sends it to the AI prompt, and immediately discards it. No user data is saved to a database.
- AI Safety: To ensure the roast is actually funny/mean, standard Gemini safety filters (Harassment, Hate Speech) are set to
BLOCK_NONEwithin the API route. - Revoking Access: Users can disconnect the app at any time via their Spotify Apps or Google Permissions settings.
This project is open-source and available under the MIT License.
= Est. 2025 / Operational / Cooked. =