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 indata.ts- POST route die echt verwerkt (geen
console.logmeer) - 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)
pollstabel aanmaken via Table Editor (id, question, created_at)optionstabel aanmaken met foreign key naar polls (CASCADE)- RLS policies uitleggen en SELECT policies aanzetten
- Testdata invoeren via de GUI
- SQL Editor: eerste
SELECT,WHEREenJOINquery
Pauze (15 min)
Deel 3 — Supabase koppelen aan Next.js (60 min)
npm install @supabase/supabase-js.env.localmetNEXT_PUBLIC_SUPABASE_URL+NEXT_PUBLIC_SUPABASE_ANON_KEYlib/supabase.tsclient- Types updaten (
Poll,Option) data.tsherschrijven 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.mdLes07-Docenttekst.mdLes07-Live-Coding-Guide.mdLes07-Lesopdracht.pdfLes07-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,eqen 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