Files
novi-lessons/Samenvattingen/Les07-Samenvatting.md
2026-04-22 07:05:35 +02:00

3.6 KiB

Les 7: Van In-Memory naar Supabase (Introductie)


Hoofdstuk

Deel 2: Technical Foundations (Les 4-9)

Beschrijving

Eerste kennismaking met Supabase. Studenten maken hun QuickPoll uit Les 6 af, leren wat een relationele database is via de Supabase GUI (geen SQL nodig), en koppelen voor het eerst een echte database aan hun Next.js app.

Reflectie na geven: Te veel materiaal voor één les. Studenten kwamen niet door Deel 3 heen. Daarom is Les 8 toegevoegd waarin de Supabase-koppeling rustig opnieuw wordt doorlopen, plus een /create pagina.


Lesopbouw

Deel 1 — Poll afmaken (30 min, klassikaal)

Onaffe stukken uit Les 6 wegwerken:

  • votePoll() functie in data.ts
  • POST route die echt verwerkt (geen console.log meer)
  • Server Component + VoteForm split — kernmoment van de les
  • GET route + visuele percentage bars in PollItem

Deel 2 — Supabase Introductie, No Code (45 min)

Voor de meeste studenten hun eerste database ervaring.

  • Wat is Supabase? Open-source Firebase alternatief op Postgres
  • Project aanmaken (via GitHub login)
  • polls tabel aanmaken via Table Editor (id, question, created_at)
  • options tabel aanmaken met foreign key naar polls (CASCADE)
  • RLS policies uitleggen en SELECT policies aanzetten
  • Testdata invoeren via de GUI
  • SQL Editor: eerste SELECT, WHERE en JOIN query

Pauze (15 min)

Deel 3 — Supabase koppelen aan Next.js (60 min)

  • npm install @supabase/supabase-js
  • .env.local met NEXT_PUBLIC_SUPABASE_URL + NEXT_PUBLIC_SUPABASE_ANON_KEY
  • lib/supabase.ts client
  • Types updaten (Poll, Option)
  • data.ts herschrijven met Supabase queries (select, eq, single)
  • Homepage async maken
  • PollItem, VoteForm, detailpagina aanpassen
  • Testen op localhost — data overleeft restart

Vragen + Huiswerk (15 min)

Huiswerk: /create pagina bouwen (formulier → INSERT in Supabase) — voor de meeste studenten te zwaar gebleken, daarom in Les 8 herhaald.


Kernconcepten

  • Server Component vs Client Component patroon
  • Database-as-a-service (Supabase = Postgres + Auth + REST + Realtime)
  • Tabellen, kolommen, primary keys, foreign keys, CASCADE
  • Row Level Security (RLS) basics
  • Environment variables in Next.js (NEXT_PUBLIC_ prefix)
  • Supabase JavaScript client: from, select, eq, single

Tools

  • Next.js 15
  • Supabase (Table Editor, SQL Editor)
  • Cursor / VS Code
  • TypeScript
  • @supabase/supabase-js

Lesopdracht

Volg de docent klassikaal mee door Deel 1 → 3. Aan het eind draait je QuickPoll app met data uit Supabase.

Huiswerk

  • /create pagina afmaken (formulier dat een nieuwe poll insert)
  • Validatie toevoegen
  • Eventueel: extra SQL queries proberen

Lesmateriaal

  • Les07-Slide-Overzicht.md
  • Les07-Docenttekst.md
  • Les07-Live-Coding-Guide.md
  • Les07-Lesopdracht.pdf
  • Les07-Slides.pptx

Leerdoelen

Na deze les kan de student:

  • Uitleggen wat Supabase is en wanneer je het inzet
  • Een Supabase project aanmaken via de GUI
  • Tabellen met relaties (foreign keys) aanmaken in de Table Editor
  • RLS policies opzetten voor publieke read access
  • De Supabase JavaScript client installeren en configureren
  • Environment variables gebruiken voor API keys
  • Data ophalen met select, eq en relaties (options(*))
  • Het Server Component + Client Component patroon toepassen

Lessons Learned (voor v2)

  • 3 hoofddelen in 1 les is te ambitieus voor het tempo van deze klas
  • /create pagina als huiswerk werkt niet — studenten hebben begeleiding nodig bij hun eerste INSERT
  • Splits Supabase introductie en concrete code-koppeling over twee lessen → Les 8 voegt dit toe