310 lines
8.9 KiB
Markdown
310 lines
8.9 KiB
Markdown
# Les 3 — Lesstof
|
||
## Cursor Basics
|
||
|
||
**Vak:** AI-Assisted Development
|
||
**Opleiding:** NOVI Hogeschool Utrecht
|
||
**Vorige les:** Les 2 — OpenCode
|
||
**Volgende les:** Les 4 — TypeScript Fundamentals
|
||
|
||
---
|
||
|
||
## Doel van deze les
|
||
|
||
Aan het einde van deze les heb je:
|
||
|
||
- Cursor geïnstalleerd en geactiveerd met je Student Plan
|
||
- Skills/Docs geconfigureerd voor Next.js, React, Tailwind
|
||
- Een werkend Next.js project opgezet via `npx create-next-app`
|
||
- De drie hoofdsneltoetsen (Tab / Cmd+K / Cmd+L) actief gebruikt
|
||
- Een `.cursorrules`-bestand in je project
|
||
- Een Hero-component, een styling-tweak en één extra feature gebouwd
|
||
- Je eerste commit naar Git gedaan
|
||
|
||
---
|
||
|
||
## 1. Wat is Cursor
|
||
|
||
Cursor is een **fork van Visual Studio Code** met AI als kernfeature ingebouwd. Dat betekent: alles wat je in VS Code kunt — file explorer, terminal, debugger, extensies — werkt hier ook. Het verschil: AI is geen plug-in maar een onderdeel van de editor zelf.
|
||
|
||
### Werkt met meerdere modellen
|
||
|
||
Cursor laat je per chat kiezen welk AI-model je gebruikt:
|
||
- **Claude** (Opus, Sonnet, Haiku) — sterk in code-redenering
|
||
- **GPT** (4, 4o, 5) — solide allround
|
||
- **Gemini** (Pro, Flash) — snel en goedkoop
|
||
- **Lokaal** (via Ollama) — privacy en kosten-vriendelijk
|
||
|
||
### Waarom relevant
|
||
|
||
- Industry-standard in AI-assisted development
|
||
- Veel vacatures noemen het expliciet
|
||
- Gratis Pro Student voor NOVI-studenten
|
||
|
||
---
|
||
|
||
## 2. Student Plan activeren
|
||
|
||
### Wat krijg je
|
||
|
||
| Tier | Fast requests/maand | Premium models | Tab-completion |
|
||
|------|--------------------:|----------------|----------------|
|
||
| Free | 50 | beperkt | onbeperkt |
|
||
| Pro | 500 | volledig | onbeperkt |
|
||
| **Pro Student** | **500** | **volledig** | **onbeperkt** |
|
||
| Business | 1000+ | volledig | onbeperkt |
|
||
|
||
Pro Student = gewone Pro, maar gratis voor verified studenten.
|
||
|
||
### Hoe activeer je
|
||
|
||
1. Ga naar `cursor.com/students`
|
||
2. Log in met je **NOVI e-mailadres** (niet je persoonlijke Gmail)
|
||
3. SheerID verifieert je via NOVI's inschrijfsysteem (1–10 min)
|
||
4. Cursor upgrade je account automatisch naar **Pro Student**
|
||
|
||
### Verifiëren
|
||
|
||
Open Cursor → Settings (Cmd+,) → Tab **General** → check **Account**. Status moet **"Pro Student"** zijn.
|
||
|
||
Als het "Free" blijft: log opnieuw in via cursor.com/students en herstart Cursor.
|
||
|
||
---
|
||
|
||
## 3. Installeren
|
||
|
||
```bash
|
||
# 1. Download van cursor.com (kies je OS)
|
||
# 2. Installeer als gewone app (sleep naar Applications op Mac,
|
||
# next-next-finish op Windows)
|
||
# 3. Open Cursor → Sign in
|
||
# 4. Optioneel: importeer VS Code instellingen (klik Ja bij de prompt)
|
||
```
|
||
|
||
Eerste keer Cursor opent vraagt hij:
|
||
- VS Code settings importeren? **Ja** (theme, keybindings, extensies blijven)
|
||
- Welk model kiezen? Voor nu: laat default staan
|
||
|
||
---
|
||
|
||
## 4. Skills / Docs configureren
|
||
|
||
Cursor kan officiële framework-documentatie indexeren. Vervolgens kun je in chat schrijven `@docs:Next.js` en de AI antwoordt met actuele info uit die docs.
|
||
|
||
### Setup
|
||
|
||
1. Settings → **Features** → **Docs**
|
||
2. Klik **+ Add new doc**
|
||
3. Voeg toe (één voor één):
|
||
- `Next.js` (URL: `https://nextjs.org/docs`)
|
||
- `React` (URL: `https://react.dev`)
|
||
- `Tailwind CSS` (URL: `https://tailwindcss.com/docs`)
|
||
4. Wacht tot indexering klaar is (1–2 min per doc)
|
||
|
||
### Gebruiken
|
||
|
||
In Cmd+L (chat):
|
||
|
||
```
|
||
@docs:Tailwind hoe centreer ik verticaal en horizontaal met flex?
|
||
```
|
||
|
||
Cursor antwoordt met de juiste Tailwind-classes uit de officiële docs.
|
||
|
||
---
|
||
|
||
## 5. Eerste Next.js project
|
||
|
||
### Scaffolden
|
||
|
||
```bash
|
||
cd ~/web # of waar jij je projecten houdt
|
||
npx create-next-app@latest mijn-eerste-cursor-app
|
||
```
|
||
|
||
Prompts:
|
||
|
||
| Vraag | Aanbevolen | Waarom |
|
||
|-------|-----------|--------|
|
||
| TypeScript? | **Ja** | strict typing voorkomt bugs |
|
||
| ESLint? | **Ja** | code-style consistency |
|
||
| Tailwind CSS? | **Ja** | utility-first styling |
|
||
| `src/` directory? | **Ja** | houdt project-root schoon |
|
||
| App Router? | **Ja** | moderne Next.js flow |
|
||
| Turbopack? | **Ja** | snellere dev-builds |
|
||
| Import alias `@/*`? | **Ja** | `@/components/x` ipv `../../components/x` |
|
||
|
||
### Starten
|
||
|
||
```bash
|
||
cd mijn-eerste-cursor-app
|
||
npm run dev # → http://localhost:3000
|
||
```
|
||
|
||
### Openen in Cursor
|
||
|
||
```bash
|
||
cursor . # opent huidige folder in Cursor
|
||
```
|
||
|
||
Of: File → Open Folder → kies de map.
|
||
|
||
---
|
||
|
||
## 6. De drie hoofdsneltoetsen
|
||
|
||
| Sneltoets | Functie | Kost |
|
||
|-----------|---------|------|
|
||
| **Tab** | Accept AI auto-completion | **Gratis** |
|
||
| **Cmd+K** | Inline edit op selectie | 1 request |
|
||
| **Cmd+L** | Chat-paneel openen | 1 request |
|
||
|
||
### Tab — autocomplete
|
||
|
||
Cursor analyseert je hele bestand én recente edits. Hij suggereert hele blokken code, niet alleen één woord.
|
||
|
||
**Voorbeeld:** typ een commentaar `// render team list` op een lege regel. Cursor genereert de hele component eronder. Druk **Tab** om te accepteren, **Esc** om te negeren.
|
||
|
||
**Wanneer:** boilerplate, herhalende patronen, voorspelbare code (CRUD, list renders).
|
||
|
||
### Cmd+K — inline edit
|
||
|
||
Voor gerichte één-bestand-wijzigingen.
|
||
|
||
**Stappen:**
|
||
1. Selecteer code (of zet cursor op een regel)
|
||
2. Druk **Cmd+K**
|
||
3. Input-balkje opent boven je code
|
||
4. Typ je instructie: *"converteer naar TypeScript"*
|
||
5. Cursor toont een **diff direct in de editor**
|
||
6. **Tab** = Accept, **Esc** = Reject
|
||
|
||
**Wanneer:** variabele hernoemen, één functie refactoren, types toevoegen, commentaar uitleggen.
|
||
|
||
### Cmd+L — Chat
|
||
|
||
Voor vragen en grotere taken.
|
||
|
||
**Stappen:**
|
||
1. Druk **Cmd+L** — chat-paneel opent rechts
|
||
2. Optioneel: gebruik `@`-mentions voor context (zie volgende sectie)
|
||
3. Typ je vraag of taak
|
||
4. Cursor antwoordt + kan diffs voorstellen
|
||
5. Apply / Reject per file
|
||
|
||
**Wanneer:** uitleg vragen, grote multi-file taken, code-review.
|
||
|
||
---
|
||
|
||
## 7. Context via `@`-mentions
|
||
|
||
In Cmd+L (chat) type je `@` voor een autocomplete-menu:
|
||
|
||
| Tag | Wat het doet |
|
||
|-----|--------------|
|
||
| `@file:foo.tsx` | inclusief één specifiek bestand |
|
||
| `@folder:components` | hele map |
|
||
| `@code:functionName` | losse functie of class |
|
||
| `@docs:Next.js` | officiële Next.js docs (eerst configureren) |
|
||
| `@web` | live web-search |
|
||
| `@git` | git history / blame |
|
||
|
||
**Voorbeeld:**
|
||
|
||
```
|
||
@file:page.tsx Refactor deze component zodat hij @docs:React useReducer gebruikt in plaats van useState.
|
||
```
|
||
|
||
---
|
||
|
||
## 8. Request management
|
||
|
||
500 requests per maand klinkt veel, maar zonder discipline ben je er in een week doorheen.
|
||
|
||
### Tips
|
||
|
||
- **Combineer in 1 Cmd+L:** *"maak een Hero met titel, ondertitel, twee CTA-knoppen, gradient achtergrond en responsive"* = één request voor een hele feature.
|
||
- **Tab is gratis** — gebruik het voor alles wat eenvoudig is.
|
||
- **Cmd+K voor gerichte edits** — niet voor "maak iets nieuws".
|
||
- **Cmd+L met `@file`** — bespaar Cursor het zoeken naar context.
|
||
|
||
### Anti-patterns
|
||
|
||
- Tien losse Cmd+K's voor één feature
|
||
- Cmd+L met te weinig context (*"maak iets cools"*)
|
||
- Vergeten dat Tab bestaat
|
||
|
||
---
|
||
|
||
## 9. `.cursorrules`
|
||
|
||
Een bestand in de root van je project dat Cursor bij elke prompt meeleest.
|
||
|
||
### Voorbeeld
|
||
|
||
```text
|
||
# .cursorrules
|
||
|
||
- Gebruik TypeScript strict mode
|
||
- Tailwind voor styling, geen CSS modules
|
||
- Server components by default; "use client" alleen waar nodig
|
||
- Imports met @/ alias voor src/
|
||
- Functional components, geen classes
|
||
- Geen any-types; expliciete return types op exports
|
||
```
|
||
|
||
### Genereren
|
||
|
||
Vraag Cursor het zelf in Cmd+L:
|
||
|
||
```
|
||
Maak een .cursorrules voor dit Next.js project. Focus op TypeScript strict, Tailwind, en App Router conventies.
|
||
```
|
||
|
||
Cursor stelt een goede basis voor. Pas aan naar smaak en commit het in je repo.
|
||
|
||
### Effect
|
||
|
||
Je hoeft niet elke keer "vergeet niet TypeScript te gebruiken" in je chat te typen. Cursor weet het al.
|
||
|
||
> **Vooruitblik (Les 14):** in nieuwere Cursor-versies is er ook een `.cursor/rules/`-map met meerdere `.mdc`-bestanden + YAML front-matter (`alwaysApply`, `globs`). Voor nu is `.cursorrules` in de root prima en simpeler.
|
||
|
||
---
|
||
|
||
## 10. Hands-on — wat je gaat bouwen
|
||
|
||
Drie kleine taken in je net gescaffolde project:
|
||
|
||
| Taak | Wat | Sneltoets |
|
||
|------|-----|-----------|
|
||
| **1** | Hero-component (titel, subtitel, 2 CTA-knoppen, gradient, responsive) | Cmd+L |
|
||
| **2** | Styling-tweak: kleuren/spacing van de knoppen | Cmd+K |
|
||
| **3** | Extra feature naar keuze: FeatureCards / ContactForm / Footer | Cmd+L of Cmd+K |
|
||
|
||
Daarna `git add . && git commit -m "first cursor build"`.
|
||
|
||
Exacte stappen + voorbeeldprompts: zie `Les03-Lesopdracht.pdf`.
|
||
|
||
---
|
||
|
||
## 11. Verder lezen
|
||
|
||
- **Cursor docs** — `cursor.com/docs` — features, sneltoetsen, rules-syntax
|
||
- **Cursor changelog** — `cursor.com/changelog` — wat is nieuw
|
||
- **Next.js docs** — `nextjs.org/docs`
|
||
- **Tailwind docs** — `tailwindcss.com/docs`
|
||
|
||
---
|
||
|
||
## Samenvatting
|
||
|
||
Vandaag heb je geleerd:
|
||
|
||
- Cursor is een VS Code-fork met AI ingebouwd
|
||
- Student Plan = 500 requests/maand gratis (via cursor.com/students)
|
||
- Drie sneltoetsen: Tab (gratis), Cmd+K (inline edit), Cmd+L (chat)
|
||
- Context via `@`-mentions: file, folder, code, docs, web, git
|
||
- `.cursorrules` per project voor consistente AI-output
|
||
- Eerste hands-on met Hero / tweak / extra feature
|
||
|
||
Volgende les: TypeScript Fundamentals. Veel later (Les 14): Cursor 3 deep dive met Editor / Agents Window en deployment.
|