# Polderfest demo — Les 12 startpunt Kopie van de werkende Les 11 demo. **Startpunt** voor Les 12 — Tool Calling. ## Wat zit hier al in? - Next.js 16 + TypeScript + Tailwind - Supabase client (`lib/supabase.ts` voor client, `lib/supabase-admin.ts` voor service-role) - Chat-route met **context-all** aanpak (`app/api/chat/route.ts`): - Haalt alle 500 bands op - Stuurt mee als tekst in system prompt - `streamText` → `toUIMessageStreamResponse()` - Chat-pagina met `useChat` van `@ai-sdk/react` (`app/page.tsx`) - Seed script (`scripts/seed-polderfest.ts`) - `AGENTS.md` met project context ## Wat doen we in Les 12? We refactoren `app/api/chat/route.ts` van **context-all** naar **Tool Calling**: - Weg met de hele context-string - Tools definiëren — `searchBands`, `getStats`, `getBandByName`, ... - `stopWhen: stepCountIs(5)` voor multi-step - System prompt aanpassen: "gebruik tools, verzin niet" - UI uitbreiden om tool-invocations te tonen ## Setup ```bash # 1. Dependencies installeren npm install # 2. .env.local maken cp .env.local.example .env.local # Vul je eigen Supabase + OpenAI keys in # 3. Supabase schema (als nog niet gedaan) # Open Supabase → SQL Editor → run schema.sql uit Les 11 # 4. Seed (als nog niet gedaan) npx tsx scripts/seed-polderfest.ts # 5. Dev server npm run dev ``` Open `http://localhost:3000` voor de chat. ## Stack-versies in dit project - `ai` v6 — gebruikt nieuwere API: - `UIMessage` type - `convertToModelMessages()` - `toUIMessageStreamResponse()` - `@ai-sdk/react` v3 — `useChat` returnt `{ messages, sendMessage, status }` - `@ai-sdk/openai` v3 - Tool API (v6): gebruikt `inputSchema` (was `parameters`) en `stopWhen` (was `maxSteps`)