# Les 7 — Slide Overzicht ## Van In-Memory naar Supabase --- ## Slide 1: Titelslide **Layout:** Split (cream links, blauw rechts) — Keynote stijl - NOVI Hogeschool logo - "AI leerlijn" - **Next.js** - **Les 7** --- ## Slide 2: Terugblik vorige les **Layout:** Cream + blauw blob rechts - **Titel:** Terugblik vorige les - Links: Wat we gebouwd hebben - Next.js QuickPoll app van scratch - TypeScript types, API routes, pages - Server Components + Client Components - Loading, Error, Not-Found states - Middleware - Rechts: Wat nog mist - Stemmen werkt niet echt - Data verdwijnt bij restart - Geen echte database --- ## Slide 3: Planning **Layout:** Gele achtergrond + decoratieve blobs - **Titel:** Planning - Deel 1: Poll afmaken — 30 min - votePoll functie, POST route, bug fix, visuele feedback - Deel 2: Supabase Introductie (No Code) — 45 min - Account, tabellen, foreign keys, RLS, SQL - Pauze — 15 min - Deel 3: Supabase koppelen — 60 min - Client, environment variables, data.ts, testen - Afsluiting — 30 min --- ## Slide 4: Wat is Supabase? **Layout:** Cream + blauw blob rechts - **Titel:** Wat is Supabase? - Open-source Firebase alternatief - PostgreSQL database — 30+ jaar, professioneel - Auth — login, registratie, OAuth - Storage — bestanden uploaden - Realtime — live updates - Edge Functions — serverless - Gratis tier voor leren en kleine projecten --- ## Slide 5: Van Array naar Database **Layout:** Cream + blauw blob rechts - **Titel:** Van Array naar Database - Links: code block met de oude in-memory array ``` let polls: Poll[] = [ { id: "1", question: "...", options: [...], votes: [...] } ]; ``` - Rechts: twee tabellen - polls: id, question, created_at - options: id, poll_id, text, votes - Pijl van links naar rechts: "Normalisatie" - Uitleg: "Eén array → twee tabellen met een relatie" --- ## Slide 6: Live Coding — Deel 1 **Layout:** Blauw volledig + cream blob links - **Titel:** Live Coding - **Subtitel:** Deel 1: Poll afmaken - Stappen: - votePoll() functie - POST route werkend - Bug fix: optionIndex - Visuele feedback --- ## Slide 7: Supabase Setup — Deel 2 **Layout:** Blauw volledig + cream blob links - **Titel:** Supabase Setup - **Subtitel:** Deel 2: No Code — alles via de browser - Stappen: - Project aanmaken - Tabellen: polls + options - Foreign keys & relaties - RLS policies - Testdata + SQL Editor --- ## Slide 8: Pauze **Layout:** Cream + grote blauwe cirkel - **Titel:** Pauze - **Subtitel:** 15 minuten - "Deel 1 & 2 staan er. Na de pauze: koppelen aan Next.js!" --- ## Slide 9: Live Coding — Deel 3 **Layout:** Blauw volledig + cream blob links - **Titel:** Live Coding - **Subtitel:** Deel 3: Supabase × Next.js - Stappen: - @supabase/supabase-js installeren - .env.local + supabase client - data.ts herschrijven - Components + pages aanpassen - Testen: stem → refresh → data bewaard! --- ## Slide 10: Vragen? **Layout:** Cream + blauw blob rechts - **Titel:** Vragen? - Reflectievragen: - Snap je het verschil tussen in-memory en database? - Kun je uitleggen wat een foreign key doet? - Begrijp je hoe RLS werkt? --- ## Slide 11: Huiswerk **Layout:** Cream + blauw blob rechts - **Titel:** Huiswerk - Opdracht: /create pagina bouwen 1. Formulier met vraag + opties 2. Opslaan in Supabase (INSERT) 3. Navbar link toevoegen 4. Redirect na aanmaken - Extra: - SQL queries schrijven (meeste stemmen, sorteren) - Validatie toevoegen --- ## Slide 12: Afsluiting **Layout:** Blauw volledig + cream/roze/zwart blobs links - **Titel:** Tot volgende week! - Volgende les: Supabase Auth — inloggen & registreren - "Van array naar echte database. Goed gedaan!"