A Farcaster mini app for short-form video. Scroll a personalized video feed, browse channel and profile feeds, and like, recast, comment and follow without leaving the app.
- Next.js 15 (App Router) + TypeScript + React
- Neynar for Farcaster data and signers
- mbd.xyz for the personalized feed
- Prisma + PostgreSQL
- Upstash Redis for rate limits and notification state (optional)
- Vidstack video player, TailwindCSS + shadcn/ui
- PostHog analytics
Requirements: Bun, a PostgreSQL database, and a Neynar API key.
bun install
cp .env.example .env.local # fill in the values
npx prisma migrate dev
bun run devThe app runs inside a Farcaster client. To test it, expose your local server over HTTPS, for example with a tunnel. Then open it in the mini app developer tools.
See .env.example for the full list.
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_URL, NEXT_PUBLIC_DOMAIN |
Public URL and domain of the app. Quick Auth tokens are verified against the domain. |
DATABASE_URL |
PostgreSQL connection string |
NEYNAR_API_KEY, NEYNAR_CLIENT_ID |
Neynar API access and notification webhook |
FARCASTER_DEVELOPER_MNEMONIC |
App account used to sign and sponsor signer key requests |
DEV_SIGNER_UUID |
Signer of the account that invites new users to the channel |
MBD_API_KEY |
mbd.xyz feed API key |
KV_REST_API_URL, KV_REST_API_TOKEN |
Upstash Redis (optional, falls back to in-memory) |
NEXT_PUBLIC_POSTHOG_KEY |
PostHog project key |
ACCOUNT_ASSOCIATION_* |
Signed account association for /.well-known/farcaster.json |
The app is set up for Vercel (vercel.json runs prisma generate before the build). Set the environment variables above in your project. Generate the account association for your own domain.
See SECURITY.md to report vulnerabilities.