Transform corporate slogans into brutal metal breakdowns. Because every brand deserves a mosh pit.
A satirical web app that takes advertising slogans and turns them into hardcore/metalcore/deathcore music snippets. Built with React, powered by AI music generation, deployed on Vercel.
- AI Music Generation: 15-second snippets (5s buildup + 10s breakdown) using fal.ai's Minimax Music model
- 3 Metal Genres: Hardcore, Metalcore, Deathcore
- Content Moderation: LLM-powered filtering to keep submissions appropriate
- Rate Limiting: 3 free generations, then email verification required
- Gallery System: Pin your favorites, share the chaos
- Zero-Config Deployment: One-click deploy to Vercel
- Node.js 18+
- A fal.ai API key (required)
- Optional: OpenRouter API key for moderation
- Optional: Resend API key for email verification
-
Clone the repo
git clone <your-repo-url> cd breakdown-app
-
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env.local
Edit
.env.localand add your API keys:FAL_API_KEY=your_fal_api_key_here OPENROUTER_API_KEY=your_openrouter_key_here # Optional RESEND_API_KEY=your_resend_key_here # Optional
-
Run the development server
npm run dev
-
Open your browser Navigate to
http://localhost:5173
-
Install Vercel CLI
npm install -g vercel
-
Login to Vercel
vercel login
-
Deploy
vercel
Follow the prompts. On first deploy:
- Set up and deploy:
Y - Which scope: Select your account
- Link to existing project:
N - Project name:
breakdown-app(or your choice) - Directory:
.(current directory) - Override settings:
N
- Set up and deploy:
-
Set environment variables
vercel env add FAL_API_KEY # Paste your fal.ai API key when prompted # Optional: Add moderation vercel env add OPENROUTER_API_KEY # Optional: Add email verification vercel env add RESEND_API_KEY
-
Deploy to production
vercel --prod
-
Push your code to GitHub
git init git add . git commit -m "Initial commit" git remote add origin <your-github-repo-url> git push -u origin main
-
Import to Vercel
- Go to vercel.com
- Click "New Project"
- Import your GitHub repository
- Add environment variables in the Vercel dashboard:
FAL_API_KEY(required)OPENROUTER_API_KEY(optional)RESEND_API_KEY(optional)
- Click "Deploy"
- Go to fal.ai
- Sign up and navigate to API Keys
- Create a new API key
- Copy and add to your
.env.localor Vercel environment variables
Cost: ~$0.10-0.20 per 15-second generation. Set budget limits in fal.ai dashboard.
- Go to openrouter.ai
- Sign up and get an API key
- We use the free
meta-llama/llama-3.2-3b-instruct:freemodel for moderation - Add to environment variables
Cost: $0.00 with free tier model
- Go to resend.com
- Sign up and create an API key
- Verify your sending domain (or use their test domain)
- Add to environment variables
Cost: Free tier includes 100 emails/day
This app is designed for short-term viral use without breaking the bank:
- Anonymous users: 3 free generations
- Email-verified users: Unlimited (but still rate-limited to prevent abuse)
- LLM pre-filters inappropriate submissions
- Prevents wasted API calls on banned content
- 15-second snippets instead of full songs
- Faster generation, lower costs
- Toggle "SIMULATION ACTIVE" for testing without API calls
- Uses a placeholder sound effect
- Set a maximum monthly budget in your fal.ai dashboard
- Recommended: $10-20 for a weekend launch
- 100 generations = $10-20
- 500 generations = $50-100
- With rate limiting, you can cap total cost effectively
breakdown-app/
βββ api/ # Vercel Serverless Functions
β βββ generate.js # Music generation endpoint
β βββ poll-status.js # Status polling endpoint
β βββ moderate.js # Content moderation endpoint
β βββ verify-email.js # Email verification endpoint
βββ src/
β βββ App.jsx # Main application component
β βββ main.jsx # React entry point
β βββ index.css # Global styles
β βββ data/
β βββ galleryData.js # Initial gallery items
βββ public/
β βββ logo.png # App logo (add your own!)
βββ .env.example # Environment variables template
βββ .env.local # Your local environment (git-ignored)
βββ vercel.json # Vercel configuration (optional)
βββ vite.config.js # Vite configuration
βββ package.json # Dependencies and scripts
- User enters a slogan and selects a genre
- App checks rate limit (localStorage + server-side)
- If limit exceeded, prompts for email verification
- Content is moderated via LLM API
- If approved, sends request to backend
POST /api/generate: Initiates music generation with fal.ai- Returns
request_idandstatus_url GET /api/poll-status: Polls fal.ai for completion- Returns audio URL when ready
POST /api/moderate: Filters inappropriate contentPOST /api/verify-email: Sends verification codes
- API keys stored in environment variables (never exposed to client)
- Rate limiting prevents abuse
- Content moderation filters harmful submissions
- Email verification gates unlimited access
- Anonymous users are limited to 3 generations
- Verify your email to continue
- Or wait for rate limit reset (1 hour)
- Check that
FAL_API_KEYis set in environment variables - Redeploy after adding environment variables
- OpenRouter API might be down
- App will fallback to basic keyword filtering
- Consider adding
OPENROUTER_API_KEYfor better moderation
- Check spam folder
- Verify
RESEND_API_KEYis set correctly - In development, check browser console for code
- fal.ai queue times vary (usually 30-120 seconds)
- Try during off-peak hours
- Check fal.ai status page
Replace /public/logo.png with your custom logo (recommended: 800x400px PNG)
Edit GENRES array in src/App.jsx:
const GENRES = [
{
id: "your-genre",
label: "Your Genre",
prompt: "15 second custom genre: description here",
},
];In api/generate.js, modify checkRateLimit() parameters:
const rateLimit = checkRateLimit(rateLimitId, 5, 3600000); // 5 requests per hourUse POST /api/moderate with:
{
"text": "Your test slogan"
}- Persistent database for gallery (Supabase/Firebase)
- Social sharing (Twitter, Instagram cards)
- Download audio files
- User accounts with OAuth
- Admin dashboard for moderation
- Analytics dashboard
- Alternative music models (Suno, Udio)
- Genre customization
- Longer audio snippets (30s, 60s)
MIT License - Do whatever you want with this code. We're just here for the chaos.
Built by developers who think corporate slogans deserve better. Or worse. We're not sure.
Stack:
- React 19
- Vite
- Tailwind CSS
- fal.ai (Minimax Music)
- OpenRouter (LLaMA 3.2)
- Vercel (Hosting)
- Lucide Icons
- Live Demo (add after deployment)
- fal.ai Documentation
- Vercel Documentation
- OpenRouter Documentation
This is a satirical art project. We are not affiliated with any of the brands that might get turned into metal breakdowns. Please don't sue us. We're broke.
The AI-generated music is for entertainment purposes only. If you actually use this for commercial purposes, consult a lawyer first (and maybe a therapist).
Made with β€οΈ and a dangerous amount of caffeine