Files
novi-lessons/Les07-Nextjs/Les07-Slide-Overzicht.md
2026-03-31 16:34:28 +02:00

3.7 KiB
Raw Permalink Blame History

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!"