# Les 13 — Lesopdracht ## Bouw je eigen Polderfest-agent **Vak:** AI-Assisted Development **Opleiding:** NOVI Hogeschool Utrecht **Werkvorm:** in-class, na de pauze (±1,5 uur) **Status:** klaar = productie-URL in de chat delen --- ## Doel Aan het einde van deze opdracht heb je een werkende Polderfest-agent met zes nieuwe features bovenop Les 12: getWeather, addToFavorites, finishPlan, hasToolCall, prepareStep, en een UI die tool-calls toont. Live op je eigen Vercel-deployment. --- ## Wat je nodig hebt (zit allemaal al klaar uit Les 11/12) - Je Polderfest-app uit Les 12, of `polderfest-original.zip` uit lesbestanden - Supabase project met `bands` en `user_favorites` tabel - OpenAI API key in `.env.local` - Vercel account - `Les13-Stap-voor-stap.md` als gids --- ## Stappenplan Werk in jouw eigen tempo. Hierbij de hoofdlijn — voor de exacte code per stap zie `Les13-Stap-voor-stap.md` en `polderfest-with-agent.zip`. 1. **Project klaarzetten** — Polderfest-original uitpakken of eigen versie gebruiken, `npm install && npm run dev` 2. **Nieuwe route** — `app/api/agent/route.ts` aanmaken (kopie van chat-route) 3. **`addToFavorites`** — write-tool toevoegen (insert in `user_favorites`) 4. **`getWeather`** — externe API (Open-Meteo, geen key) 5. **`finishPlan`** — Zod-schema structured-output tool 6. **`hasToolCall`** — extra stop-conditie naast `stepCountIs(8)` 7. **`prepareStep`** — model switching (krachtig → goedkoop) 8. **UI** — `app/agent/page.tsx` met tool-call-rendering 9. **Testen** — drie demo-prompts in de browser 10. **Deploy** — Vercel + env vars --- ## Op te leveren Tijdens de les in de chat plaatsen: - Productie-URL van je `/agent` pagina - Screenshot van je Supabase Table Editor met minimaal één nieuwe rij in `user_favorites` (gemaakt door de agent) --- ## Test-prompts (gebruik deze om te valideren) | Prompt | Verwachte tools | |--------|-----------------| | "Plan een avond met indie en techno voor zaterdag." | searchBands × 2 + getDaySchedule + finishPlan | | "Wat speelt er op zondag en hoe is het weer?" | getDaySchedule + getWeather + finishPlan | | "Welke band moet ik NIET missen op vrijdag? Zet hem in mijn favorieten." | searchBands + addToFavorites + finishPlan | Werkt prompt 3 niet (geen rij in `user_favorites`)? Check of de service-role-key in `.env.local` staat en of de tool de `band_id` correct ophaalt. --- ## Vastgelopen? - Open `polderfest-with-agent.zip` als spiekbriefje - Zoek in de code op `// STEP N` voor de exacte plek per feature - Vraag in de chat — ik loop rond Veel succes!