Minimale Next.js-app die inlogt via Discord (met Supabase) en het profiel toont. Dit is stap 3 uit het grotere plan: de basis waarop we straks de Bingo/Ganzebord/PvP-tools bouwen.
app/
layout.tsx -> basislayout van de site
page.tsx -> homepage: toont login-knop of profiel
auth/callback/route.ts -> vangt de Discord-login op en maakt de sessie aan
components/
LoginButton.tsx -> "Inloggen met Discord" knop
LogoutButton.tsx -> "Uitloggen" knop
lib/supabase/
client.ts -> Supabase-verbinding voor in de browser
server.ts -> Supabase-verbinding voor op de server
middleware.ts -> houdt de login-sessie geldig
Je hebt Node.js nodig (versie 18 of hoger). Check of je het al hebt:
node -vZo niet, download het via https://nodejs.org (kies de LTS-versie).
Pak deze map uit, open een terminal in de map, en voer uit:
npm installDit installeert Next.js, React en de Supabase-libraries.
- Kopieer
.env.local.examplenaar een nieuw bestand genaamd.env.local - Ga in Supabase naar Project Settings → API
- Vul in
.env.localin:NEXT_PUBLIC_SUPABASE_URL→ de "Project URL"NEXT_PUBLIC_SUPABASE_ANON_KEY→ de "anon public" key
Deze twee waarden zijn bedoeld om publiek zichtbaar te zijn (ze staan letterlijk in elke browser die je site bezoekt) — dat is precies waarom we de Row Level Security policies uit Deel D hebben ingesteld. Zonder RLS zou iedereen met deze key alles kunnen lezen/schrijven; mét RLS bepalen de policies wat wel/niet mag.
npm run devGa naar http://localhost:3000 — je zou de "Inloggen met Discord"-knop moeten zien.
Belangrijk: klik nog niet meteen, want je Discord OAuth-app kent localhost nog niet als toegestane redirect. Ga naar Discord Developer Portal → jouw app → OAuth2 → Redirects, en voeg ook deze toe (naast de Supabase-callback-URL die je al had):
http://localhost:3000/auth/callback
En ga in Supabase naar Authentication → URL Configuration → zet bij Redirect URLs:
http://localhost:3000/auth/callback
Nu zou inloggen moeten werken: je wordt naar Discord gestuurd, keurt de app goed, en komt terug op je homepage met je Discord-avatar en naam zichtbaar.
Na het inloggen kun je in Supabase, onder Table Editor → profiles, controleren of er een rij is aangemaakt met jouw discord_id, username en avatar_url. Zo weet je zeker dat de trigger uit Deel C goed functioneert.
- Zet dit project in een GitHub-repository (nieuwe repo aanmaken, code pushen)
- Ga naar https://vercel.com, log in met GitHub, klik New Project, kies je repository
- Bij Environment Variables, voeg dezelfde twee variabelen toe als in je
.env.local - Klik Deploy
- Zodra het live is, krijg je een URL zoals
https://jouwproject.vercel.app - Voeg die URL óók toe als redirect:
- Discord Developer Portal → OAuth2 → Redirects: (de Supabase-callback stond er al, dat is genoeg — je hoeft de Vercel-URL hier niet apart toe te voegen)
- Supabase → Authentication → URL Configuration → Redirect URLs: voeg toe
https://jouwproject.vercel.app/auth/callback
Zodra login werkt, bouwen we:
- Een pagina om een community aan te maken (schrijft naar de
communities-tabel, jij wordt automatischowner) - Een dashboard per community waar je events kan aanmaken
- Daarna de eerste event-tool: Bingo
Loop je vast bij een van bovenstaande stappen (bv. een foutmelding bij npm install, of de Discord-redirect klopt niet)? Deel de exacte foutmelding, dan lossen we het samen op.