fix: add 9

This commit is contained in:
2026-03-31 16:34:28 +02:00
parent b9ffee586f
commit 426b9f89d9
24 changed files with 1533 additions and 3758 deletions

View File

@@ -0,0 +1,149 @@
# 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!"