Let AI ruthlessly judge your questionable music taste π§
Demo β’ Features β’ Installation β’ Usage β’ Architecture β’ Contributing
β οΈ Note: Due to temporary unavailability of Spotify API access, the app is not fully functional at this time. The authentication flow and UI are complete, but live roast generation requires valid Spotify API credentials with approved access.
- Secure OAuth 2.0 authentication via NextAuth.js
- Fetches your Top 10 Artists and Top 10 Tracks
- Automatic token refresh handling
- Uses Google Gemini 3 Flash for lightning-fast roasts
- Analyzes both your music taste AND album art aesthetics
- Comments on color palettes, visual vibes, and what they say about you
- Culturally relevant internet slang (slay, delulu, the ick, NPC energy...)
- Music stereotypes and genre-based roasting
- Every roast ends with a devastating one-liner
- Dark mode aesthetic with Spotify green (#1DB954)
- Animated floating particles background
- Glassmorphism effects
- Terminal-style loading animation
- Typewriter effect for roast reveal
- "REJECTED" stamp animations on album art
- Capture your roast as a shareable PNG
- Native share API integration (mobile)
- One-click download
| Category | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS |
| Animations | Framer Motion |
| Auth | NextAuth.js |
| AI | Google Gemini 3 Flash |
| Deployment | Firebase Hosting |
- Node.js 18+
- npm or yarn
- Spotify Developer Account
- Google AI Studio Account
git clone https://github.com/pronzzz/roastify.git
cd roastifynpm installcp env.template .env.localEdit .env.local with your credentials:
# Spotify OAuth Credentials
# Get these from https://developer.spotify.com/dashboard
SPOTIFY_CLIENT_ID=your_spotify_client_id
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
# Google Gemini API Key
# Get this from https://aistudio.google.com/apikey
GEMINI_API_KEY=your_gemini_api_key
# NextAuth Configuration
# Generate secret with: openssl rand -base64 32
NEXTAUTH_SECRET=your_nextauth_secret
NEXTAUTH_URL=http://localhost:3000In your Spotify Developer Dashboard:
- Create a new app or select existing
- Go to Settings β Redirect URIs
- Add:
http://localhost:3000/api/auth/callback/spotify - Save settings
npm run devOpen http://localhost:3000 π
-
Install Firebase CLI
npm install -g firebase-tools
-
Login and Initialize
firebase login firebase init hosting
-
Build and Deploy
npm run build firebase deploy
Important: Update
NEXTAUTH_URLin your Firebase environment configuration to match your production URL.
roastify/
βββ src/
β βββ app/
β β βββ api/
β β β βββ auth/[...nextauth]/ # Spotify OAuth
β β β βββ roast/ # Roast generation API
β β βββ roast/ # Results page
β β βββ layout.tsx # Root layout
β β βββ page.tsx # Landing page
β β βββ globals.css # Global styles
β βββ components/
β β βββ AlbumGrid.tsx # Album art with stamps
β β βββ JudgeButton.tsx # Animated CTA
β β βββ Particles.tsx # Background animation
β β βββ ShareButton.tsx # Screenshot capture
β β βββ TerminalLoader.tsx # Loading animation
β β βββ TypewriterText.tsx # Typewriter effect
β βββ lib/
β β βββ gemini.ts # Gemini API client
β β βββ spotify.ts # Spotify API utilities
β βββ types/
β βββ next-auth.d.ts # Type extensions
βββ public/ # Static assets
βββ firebase.json # Firebase config
βββ env.template # Environment template
βββ package.json
sequenceDiagram
participant User
participant Frontend
participant NextAuth
participant Spotify
participant RoastAPI
participant Gemini
User->>Frontend: Click "Judge My Soul"
Frontend->>NextAuth: Initiate OAuth
NextAuth->>Spotify: Authorization Request
Spotify-->>User: Login Prompt
User->>Spotify: Approve Access
Spotify-->>NextAuth: Access Token
NextAuth-->>Frontend: Session Created
Frontend->>RoastAPI: GET /api/roast
RoastAPI->>Spotify: Fetch Top Artists & Tracks
Spotify-->>RoastAPI: Listening Data
RoastAPI->>Gemini: Text + Album Art Images
Gemini-->>RoastAPI: Savage Roast π₯
RoastAPI-->>Frontend: Roast Response
Frontend->>User: Display with Animations
- No data storage: All processing is done in-memory
- No tracking: Zero analytics or user tracking
- Secure auth: Industry-standard OAuth 2.0 via NextAuth.js
- API keys: Never exposed to the client
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Spotify Web API for music data
- Google Gemini for multimodal AI capabilities
- NextAuth.js for seamless authentication
- Framer Motion for beautiful animations
