
Roasted
All work
2025 · Design and build
A Farcaster mini app that reads a user's profile and recent casts, writes a short roast of them, turns their avatar into a meme, and shares the result as a cast.
What it does
- Runs inside Farcaster clients, where the mini app SDK fills in the signed-in user's handle
- Three services at two speeds: the roast text shows as soon as Gemini answers, and the avatar meme from Replicate swaps in when it is ready
- Sharing draws a 1080×1080 card on a canvas in the browser and uploads it, because a cast can only embed a public URL; outside Farcaster it downloads instead
- Uploads only with a signed, single-use token issued with each roast: one 1080×1080 PNG up to 3 MB, five per minute per address, named by the server
Architecture
- Data model
- No database: each roast is computed on request from the profile and its 30 most recent casts. Share cards are stored in Vercel Blob.
- API
- Next.js server actions: a Neynar lookup, the Gemini roast, a Replicate image edit, and a guarded Blob upload. API keys stay on the server.
- Auth
- None of its own. Inside Farcaster the client supplies the viewer's identity; the upload token ties each share to the roast it came from.
- Hosting
- Vercel, with a domain-signed manifest at /.well-known/farcaster.json that Farcaster checks before listing the app.