Files
novi-lessons/Les14-Cursor-Vercel-Deploy/Les14-Slide-Overzicht.md
2026-06-17 07:15:32 +02:00

564 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Les 14 — Cursor + Vercel: van leeg project naar preview
## Slide Overzicht (Klas A — online, demo-driven)
**Lesvorm:** online via Teams. Tim deelt scherm met slides + Cursor + browser.
**Demo:** een vers `npx`-gescaffold Next.js project, gebouwd live in Cursor.
**Aansluit op:** Les 13 (Polderfest-agent op localhost) → Les 15 (RAG).
---
## Blok-structuur
| Blok | Onderwerp | Slides |
|------|-----------|--------|
| 1 | Welkom + Vandaag | 12 |
| 2 | Scaffold + Git + Vercel koppelen | 37 |
| 3 | Vercel CLI + env vars | 810 |
| 4 | Cursor — Editor / Agent / Background + rules | 1119 |
| 5 | Live feature-workflow (plan → branch → preview) | 2024 |
| 6 | Recap + Nu jullie | 2527 |
---
## Slide 1: Title
### Les 14 — Cursor + Vercel
**Visual:**
- Background: CREAM
- "Les 14" in BLUE
- "Cursor + Vercel" in BLACK
- Subtitle: "Van leeg project naar preview-deploys — met AI"
- Iconen onderaan: Cursor-logo, Vercel-driehoek, GitHub-octocat
---
## Slide 2: Vandaag
### Wat we live gaan bouwen
**Vandaag in één lopend voorbeeld:**
1. `npx create-next-app` — vers project
2. Git init + push naar GitHub
3. Vercel project koppelen → eerste deploy
4. Vercel CLI: link, env pull/add
5. Cursor open: Plan, Build, Context, Rules, Background agents
6. Feature in nieuwe branch → preview-URL
7. Tweede feature via een Background agent
**Werkwijze:** ik bouw klassikaal, jullie kijken en knopen mee. Na pauze doen jullie het zelf.
**Visual:** workflow-pijl van leeg project → Cursor-features → preview-URL.
---
## Slide 3: Scaffold met `npx`
### Vers Next.js project in 30 seconden
```bash
npx create-next-app@latest mijn-portfolio
# kies: TypeScript, Tailwind, App Router, src/ dir
cd mijn-portfolio
npm run dev
```
**Wat je krijgt:**
- Werkende Next.js 16 app op `localhost:3000`
- TypeScript + Tailwind preconfigured
- ESLint klaar
- `.gitignore` met `.env.local`, `node_modules`, `.next`
**Visual:** terminal-screenshot van create-next-app vragen.
---
## Slide 4: Git init + push naar GitHub
### Code online krijgen
```bash
git init
git add .
git commit -m "init"
git branch -M main
gh repo create mijn-portfolio --public --source=. --push
```
**Of handmatig:**
- github.com → New repository → naam → empty
- `git remote add origin <url>`
- `git push -u origin main`
**Resultaat:** je code staat op github.com — basis voor alles wat volgt.
**Visual:** flow-diagram local → GitHub.
---
## Slide 5: Vercel project koppelen
### Van GitHub-repo naar live URL
**Drie stappen:**
1. vercel.com/new → **Import Git Repository**
2. Kies je `mijn-portfolio` repo
3. Framework auto-detect: Next.js → **Deploy**
**Wat Vercel doet:**
- Klonet je repo
- Draait `npm install` + `npm run build`
- Deploy't naar het Edge Network
- Geeft je een URL: `mijn-portfolio-<scope>.vercel.app`
**Voortaan:** elke `git push` → automatische deploy. Geen extra werk.
**Visual:** Vercel "Import Project" scherm.
---
## Slide 6: Productie-URL + branches
### Wat krijg je gratis
**Twee URL-types:**
| Type | URL-formaat | Wanneer |
|------|-------------|---------|
| **Productie** | `mijn-portfolio-<scope>.vercel.app` | push naar `main` |
| **Preview** | `...-git-<branch>-<scope>.vercel.app` | push naar elke andere branch |
**Voordeel preview-URLs:**
- Iedereen kan klikken zonder lokale setup
- PR-bot post URL automatisch in je Pull Request
- Per push update de preview vanzelf
**Visual:** twee URL-bubbels (groen = productie, blauw = preview).
---
## Slide 7: Env vars in Vercel UI
### Geheimen veilig op productie
**Wat je vandaag NOG niet hebt** (lege app), maar binnenkort wel:
- Database URLs
- API keys (OpenAI, Stripe, etc.)
- Secret tokens
**Drie environments:**
| Environment | Wanneer actief |
|-------------|----------------|
| Production | `main` branch deploys |
| Preview | alle andere branches |
| Development | `vercel dev` lokaal |
**`NEXT_PUBLIC_` prefix** → variabele wordt in browser-bundle gestopt. Zonder prefix = server-only.
**Visual:** Vercel env-vars dashboard screenshot.
---
## Slide 8: Vercel CLI — waarom
### Sneller dan klikken in het dashboard
**Wat de CLI je geeft:**
- `vercel link` — koppel lokale folder aan Vercel project
- `vercel env pull` — productie-env-vars → `.env.local`
- `vercel env add` / `rm` — vars beheren zonder dashboard
- `vercel logs` — bekijk runtime logs
- `vercel --prod` — handmatige productie-deploy
**Installeren:**
```bash
npm i -g vercel
vercel login
```
**Visual:** terminal-screenshot van `vercel --help`.
---
## Slide 9: `vercel link` + `vercel env pull`
### Lokaal werken met dezelfde env vars als productie
```bash
cd mijn-portfolio
vercel link
# → kiest scope (org/team) + project
# → maakt .vercel/project.json aan
vercel env pull .env.local
# → trekt ALLE env vars uit je gekoppelde environment
# → schrijft naar .env.local (overschrijft bestaande)
```
**Voordeel:** je hoeft je env vars niet handmatig te kopiëren. Eén commando = synced lokaal.
**Tip:** `vercel env pull --environment=preview` voor preview-specifieke vars.
**Visual:** terminal-output van een succesvolle env pull.
---
## Slide 10: `vercel env add/rm`
### Vars wijzigen vanuit terminal
```bash
# Toevoegen
vercel env add OPENAI_API_KEY production
# → vraagt om waarde
# Voor alle 3 environments tegelijk:
vercel env add DATABASE_URL production preview development
# Verwijderen
vercel env rm OPENAI_API_KEY production
# Lijst
vercel env ls
```
**Wanneer handig:** als je een API-key roteert, hoef je niet via dashboard. Eén CLI-commando, klaar.
**Visual:** CLI-flow met prompt-balletjes.
---
## Slide 11: Cursor — alles in één IDE
### Wat is het, waarom belangrijk
**Wat is Cursor:**
- VS Code-fork met AI native ingebouwd
- Niet een extensie — het IS de IDE
- Werkt met Claude, GPT, Gemini en lokale modellen
**Wat je krijgt boven gewone VS Code:**
- Chat met volledige codebase-context
- Plan-mode (eerst denken, dan doen)
- Build-mode (autonoom uitvoeren)
- Inline edit (Cmd+K)
- Background agents (cloud, async)
- Cursor Rules (per-project instructies)
- Tab-completion die meekijkt met je hele bestand
**Visual:** vier kwadranten met de hoofdfeatures.
---
## Slide 12: De twee windows + Agent mode
### Cursor 3 — wat zit waar
In Cursor 3 zijn er **twee hoofdvensters** die je met **Cmd+Shift+N** wisselt:
| Window | Wanneer | Hoe |
|--------|---------|-----|
| **Editor Window** (classic) | Code schrijven en reviewen | Cmd+Shift+N → Editor |
| **Agents Window** | Meerdere agents parallel managen | Cmd+Shift+N → Agents |
**Binnen Editor Window:**
- **Cmd+L** — chat opent rechts (kies modus: Ask / Agent / Plan)
- **Cmd+K** — inline edit op selectie
- **Tab** — completion
**Binnen Agents Window:**
- Lijst met running / done agents
- Lokale agents, cloud (background) agents, remote SSH
**Gouden regel:**
- Code schrijven of 1 ding bouwen → **Editor Window** + **Agent mode** in chat
- Meerdere features parallel → **Agents Window** met Background agents
**Visual:** twee windows naast elkaar + sneltoets-pijl.
---
## Slide 13: Editor Window — stap voor stap
### Je hoofdwerkplek voor code
**Wat je live ziet:**
1. **Cmd+Shift+N** — switcht naar Editor Window (classic IDE-layout)
2. Linker zijbalk = file explorer, midden = editor, onder = terminal
3. **Cmd+L** — opent chat-paneel rechts
4. Voor snelle inline edits: selecteer code, druk **Cmd+K**, beschrijf wijziging
5. Cursor toont **diff inline** in de editor
6. **Accept** (Tab) of **Reject** (Esc)
7. Voor file-search: **Cmd+P** (zoals VS Code)
8. **Tab** — accepteert AI auto-completion suggesties
**Wanneer kies je dit:**
- Je standaard coding-flow — alles wat je in VS Code zou doen
- Wanneer je veel files tegelijk wilt zien (split screen)
- Voor VS Code extensions (linters, formatters, debugger)
**Visual:** screenshot Editor Window met file explorer + editor + Cmd+K-diff.
---
## Slide 14: Agent mode — stap voor stap
### AI bouwt autonoom in je Editor Window
**Wat je live ziet:**
1. In Editor Window: **Cmd+L** — chat opent rechts
2. Bovenaan chat: **mode-selector** → kies **"Agent"**
3. Typ de **hele taak**: *"Bouw een /about pagina met team-grid in onze huisstijl"*
4. **Enter** — agent start zelfstandig
5. Cursor toont een lopende **takenlijst** + voortgang
6. Agent **edit meerdere files**, runt terminal-commando's (vraagt vooraf), kan **web browsen**
7. Geen limiet op het aantal tool-calls per taak
8. Aan het einde: samenvatting → **Keep / Accept all** of per file
**Wanneer kies je dit:**
- Grotere feature die meerdere files raakt
- Refactors, nieuwe pagina's, API-routes opzetten
- Je vertrouwt het plan en hebt tijd om aan het eind te reviewen
**Visual:** chat-paneel met mode-dropdown + lopende takenlijst.
---
## Slide 15: Background agents — stap voor stap
### Cloud-based async — in Agents Window
**Wat het is:**
- Async agents die in **geïsoleerde cloud VMs** draaien
- Werken parallel in eigen Git branches
- Beheer via **Agents Window** (Cmd+Shift+N) of `cursor.com/agents`
**Hoe een agent aanmaken:**
1. **Cmd+Shift+N** → naar Agents Window
2. Klik **"New agent"** (of `+` in de kop)
3. Kies **environment**: local / cloud / remote SSH
4. Beschrijf de taak — specifiek, alsof het een ticket is
5. Optioneel: kies branch-naam (`feature/about`)
6. Klik **"Start"**
7. Agent draait → je kunt switchen terug naar Editor Window en doorwerken
**Hoe je resultaten ophaalt:**
1. **Cmd+Shift+N** terug naar Agents Window
2. Klare agents staan op **"Done"** in de agents-lijst
3. Klik agent → zie **diff + commit message + uitgevoerde stappen**
4. **"Open in PR"** → automatische PR op GitHub
5. Vercel maakt preview-URL → review → merge
**Wanneer:** 24 parallelle features, lange refactors die je niet wilt babysitten, of taken die je triggert vanuit je telefoon / Slack / Linear.
**Visual:** Agents Window screenshot met agents-lijst.
---
## Slide 16: Context — `@`-mentions
### Hoe Cursor je codebase begrijpt
**Wat je kunt taggen in chat:**
| Tag | Betekenis |
|-----|-----------|
| `@file:foo.tsx` | specifiek bestand |
| `@folder:components` | hele map |
| `@code:functionName` | losse functie/class |
| `@docs` | externe documentatie |
| `@web` | live web-search |
| `@git` | git history / blame |
| `@recommended` | Cursor's eigen suggestie |
**Voorbeeld:** *"Refactor @file:UserCard.tsx zodat het @code:useUser uit @folder:hooks gebruikt"*
**Visual:** chat-bubble met meerdere `@`-tags highlighted.
---
## Slide 17: Cursor Rules
### Per-project instructies aan de AI
**Wat zijn rules:**
- Markdown-bestanden in `.cursor/rules/`
- Worden aan ELKE prompt toegevoegd als systeem-instructie
- Per-bestand-glob: alleen actief op matching bestanden
**Voorbeeld `.cursor/rules/general.mdc`:**
```markdown
---
description: Algemene project-conventies
alwaysApply: true
---
- Gebruik TypeScript strict mode
- Tailwind voor styling — geen CSS modules
- Server components by default; "use client" alleen waar nodig
- Imports: gebruik @/ alias voor src/
- Geen any-types
```
**Visual:** mappenstructuur met `.cursor/rules/` uitgevouwen.
---
## Slide 18: Project context — `AGENTS.md`
### High-level documentatie voor AI
**Naast Cursor Rules:**
- `AGENTS.md` of `PROJECT.md` in repo root
- Beschrijft architectuur, conventies, "hoe wij hier dingen doen"
- Cursor + Claude Code + GitHub Copilot lezen dit alle drie
**Wat erin staat:**
- Tech stack + waarom die keuzes
- Belangrijke patronen (auth flow, error handling, etc.)
- Hoe testen, hoe lokaal runnen, hoe deployen
- Pointers naar belangrijke bestanden
**Effect:** AI begrijpt je codebase in plaats van wilde gokken te doen.
**Visual:** AGENTS.md structuur als outline.
---
## Slide 19: Tips & Tricks
### Wat Cursor-power-users doen
**De top 7:**
1. **Cmd+I** voor Composer met multi-file context
2. **@-everything aanvullen** — Cursor onthoudt context per chat
3. **Plan + Apply per stap** — niet alles tegelijk accepteren
4. **`alwaysApply: false`** Rules voor opt-in conventies
5. **Auto-mode** — Cursor kiest beste model per taak
6. **Diff-preview** vóór accept — Cmd+Shift+Enter
7. **Notepads** — herbruikbare prompt-snippets per project
**Anti-pattern:** alles in één gigantische chat dumpen. Hou chats focused.
**Visual:** tips als badges met nummering.
---
## Slide 20: De feature-workflow
### Hoe één feature van idee naar preview-URL gaat
**Vijf stappen die we live doen:**
1. **Plan** in Cursor: beschrijf de feature
2. **Branch:** `git checkout -b feature/x` (Cursor kan dit ook)
3. **Build:** laat Cursor de code schrijven
4. **Commit + push** → Vercel start automatisch een preview-deploy
5. **Open preview-URL** → test, geef feedback, itereer
**Cyclus duurt ±10 minuten** per feature. Inclusief AI denkwerk.
**Visual:** circulair diagram met de 5 stappen.
---
## Slide 21: Live demo 1 — Hero section
### Plan → Build via Cursor Chat
**Wat ik demonstreer:**
- Nieuwe branch: `git checkout -b feature/hero`
- Cursor Chat: *"Plan een hero-section voor de homepage. Gradient achtergrond, een grote titel, ondertitel, twee CTA-knoppen."*
- Plan bekijken → Apply
- Inline tweaks via Cmd+K voor finetuning
- `git add . && git commit -m "feat: hero section"`
**Visual:** screenshot van Cursor met Plan-output.
---
## Slide 22: Push → preview-URL
### Vercel doet de rest
```bash
git push -u origin feature/hero
```
**Binnen 3060 seconden:**
- Vercel start build
- Preview-URL verschijnt
- (Als er een PR open is) Vercel-bot plakt URL onder de PR
**Open de preview-URL:** je nieuwe hero section staat live, gedeeld met iedereen die de link heeft.
**Visual:** Vercel build-progress screen.
---
## Slide 23: Live demo 2 — About page (background agent)
### Parallel werken
**Wat ik demonstreer:**
- Nieuwe branch: `git checkout -b feature/about`
- Cursor → *"Open background agent: bouw een /about pagina met team-leden in een grid. Gebruik onze hero-section als stijlreferentie."*
- Agent gaat in eigen tab aan de slag
- Ik blijf in main editor verder werken
- Agent meldt zich klaar → review diff → apply
- Commit + push → tweede preview-URL
**Effect:** twee features tegelijk, beide met eigen preview.
**Visual:** twee preview-URLs naast elkaar.
---
## Slide 24: PR mergen → productie
### De cyclus afsluiten
**Op GitHub:**
1. Beide branches → PR's openen
2. Reviewen in preview-URL's
3. Mergen naar `main`
4. Vercel detecteert merge → bouwt productie-deploy
5. Productie-URL update vanzelf
**Mentaliteit:** main is altijd deploy-baar. Feature branches zijn experimenteerruimte.
**Visual:** PR-pagina met "Merge" knop gemarkeerd.
---
## Slide 25: Recap
### Wat we vandaag hebben gedaan
- Vers Next.js project gescaffold met `npx`
- Git repo + push naar GitHub
- Vercel project gekoppeld + eerste deploy
- Vercel CLI: link, env pull/add
- Cursor in detail: Chat, Plan, Build, Inline, Rules, Background agents
- Twee features in eigen branches → twee preview-URL's
- PRs gemerged → productie
**Wat je nu kunt:** elke nieuwe app uit deze opleiding (of erbuiten) op deze manier opzetten. Cursor + Vercel zijn je standaard-werkbank.
**Visual:** checklist met alle stappen.
---
## Slide 26: Nu jullie — Lesopdracht
### Bouw je eigen Cursor + Vercel flow
**Wat je gaat doen (in eigen tempo, ±1,5 uur):**
1. `npx create-next-app` — je eigen project (kies een onderwerp dat je leuk vindt)
2. Push naar GitHub
3. Vercel project + eerste deploy
4. `vercel link` + `vercel env pull`
5. Open in Cursor → schrijf één `.cursor/rules/general.mdc`
6. Schrijf één `AGENTS.md`
7. Bouw 2 features in eigen branches via Cursor (Plan → Build)
8. Push beide → check preview-URL's
9. Open één PR, deel beide URL's in de chat
**Voor exacte stappen:** `Les14-Lesopdracht.pdf`.
**Visual:** opdrachtkaart met checklist.
---
## Slide 27: Volgende les
### Wat komt eraan
**Les 15 — RAG + Embeddings:**
- AI antwoorden op basis van eigen documenten
- Embeddings + pgvector + context-injectie
- We bouwen een PDF Q&A-app
**Voorbereiding:**
- Je Next.js-app uit vandaag staat live op Vercel
- Je hebt minstens 2 PR's met preview-URL's gemerged
- Cursor draait, AGENTS.md en `.cursor/rules/` zijn ingevuld
**Visual:** plaatje document → embedding → AI-antwoord.