Roasted

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.