Stop scrolling through Netflix. Ask an AI and get actual movie cards with posters, ratings, and IMDb links. Built with Vercel AI SDK.
A quick experiment with Vercel AI SDK's generative UI. Ask for a movie, get a card instead of text. Has posters, ratings, genres, IMDb links. That's about it.
git clone <this-repo>
cd filmfinder
npm installCreate .env.local:
OPENROUTER_API_KEY=sk_or_v1_xxxxx # Free at openrouter.ai
OMDB_API_KEY=xxxxx # Optional - for real postersRun it:
npm run devOpen localhost:3000 and start asking for movies.
OpenRouter (required) - Get yours here. Free tier included.
OMDB (optional) - Request here. Without this, you get AI-generated poster URLs. With it, you get real movie data from IMDb.
Uses Vercel AI SDK's tool calling. When you ask for a movie, the LLM calls recommendMovie with structured data (title, year, rating, poster URL). The frontend renders a <MovieCard> component instead of text.
// app/api/chat/route.ts
tools: {
recommendMovie: tool({
parameters: z.object({
title: z.string(),
year: z.number(),
rating: z.number(),
posterUrl: z.string().url(),
// ...
}),
execute: async (params) => params,
}),
}The rest is just UI polish.
- Next.js 16 (App Router + Turbopack)
- Vercel AI SDK 5.0
- OpenRouter (free LLM access)
- shadcn/ui + Tailwind
- TypeScript
Change the AI model - Edit app/api/chat/route.ts line 16. Free options:
mistralai/mistral-small-3.2-24b-instruct:free(default)deepseek/deepseek-r1-0528:freeqwen/qwen3-coder:free
Edit starter prompts - components/chat/suggestions-grid.tsx:
const mainSuggestions = [
{
emoji: "🎬",
title: "Your prompt",
description: "What it does",
prompt: "Actual message sent to AI",
},
];Push to GitHub, import on Vercel, add your API keys, deploy. Done.
For other platforms: Next.js deployment docs
- Port 3000 in use: Next.js auto-switches to 3001
- API keys not working: Check
.env.localis in project root, restart dev server - Build fails:
rm -rf .next && npm run build
Discord - Ask questions, share what you built, hang out.
PRs welcome. Bug fixes: just send it. Features: open an issue first.
MIT
