# Les 3: Cursor Basics - Lesopdracht (In-Class Assignment)

## Doelstelling

In deze les leer je hoe je **Cursor** effectief gebruikt om snel professionele componenten te bouwen. Je maakt een **NIEUW** Next.js project met Cursor Composer, genereert AI-gegenereerde cursorrules, en oefent met Tab Completion, Chat, Inline Edit en Composer.

**Eindresultaat:** Een werkende Next.js applicatie met Hero component en Feature Cards, volledig gebouwd met Cursor.

---

## Timing

**Totaal: 85 minuten**
- Setup & Git: 10 min
- Skills & cursorrules: 10 min
- Hero Component (Composer): 20 min
- Feature Cards (Composer): 20 min
- Inline Edit styling: 15 min
- Git commit: 5 min
- Buffer: 5 min

---

## Voorbereiding

### Benodigde software
- **Cursor** (gedownload en geïnstalleerd van cursor.com)
- **Node.js** 18+ en npm
- **Git** (voor versiecontrole)
- **Terminal/Command Prompt**

---

## Stap 1: Project aanmaken met Git (10 minuten)

### Stap 1.1: Nieuwe folder en Git init

Open Terminal/Command Prompt op je computer (niet in Cursor nog):

```bash
mkdir les3-cursor-project
cd les3-cursor-project
git init
```

### Stap 1.2: Open in Cursor

```bash
cursor .
```

Dit opent je lege project in Cursor.

**Checkpoint 1:** Project is open in Cursor met lege folder.

### Stap 1.3: Create Next.js app in Cursor Terminal

Open de Terminal in Cursor met **Ctrl+`** (backtick):

```bash
npx create-next-app@latest . --typescript --tailwind --app
```

Beantwoord alle vragen met **Yes (y)**:
- TypeScript? → **Yes**
- ESLint? → **Yes**
- Tailwind CSS? → **Yes**
- `src/` directory? → **No**
- App Router? → **Yes**
- Default import alias? → **Yes**

Dit duurt ~2-3 minuten. Wacht tot het klaar is.

**Checkpoint 2:** Next.js project is aangemaakt. Je ziet `app/`, `components/`, `package.json`, etc. in de file tree.

---

## Stap 2: Cursor Skills & Docs (10 minuten)

### Stap 2.1: Open Settings

Klik op het **⚙️ Settings icoon** linksonder in Cursor.

### Stap 2.2: Activeer Docs

Ga naar **Features** → **Docs**

Voeg deze drie documenten toe (zoek en click Add):
1. **Next.js** (officiële docs)
2. **React** (officiële docs)
3. **Tailwind CSS** (officiële docs)

Dit helpt Cursor veel beter code te genereren omdat het toegang heeft tot de juiste documentatie.

### Stap 2.3: Controleer Tab Completion

Ga naar **Features** → **Completion**
- Zorg dat **Tab Completion** is ingeschakeld (dit is gratis!)

**Checkpoint 3:** Alle drie docs zijn zichtbaar in je Docs sidebar rechts. Tab Completion is enabled.

---

## Stap 3: Generate cursorrules met Chat (1 request)

### Stap 3.1: Open Cursor Chat

Druk **Ctrl+L** (Windows/Linux) of **Cmd+L** (Mac).

Een chat panel opent aan de zijkant.

### Stap 3.2: Prompt voor .cursorrules

Typ deze prompt en druk Enter:

```
Je bent een expert Next.js developer. Genereer een .cursorrules bestand
voor een Next.js project met TypeScript, Tailwind CSS, en App Router.

Het bestand moet guidelines bevatten voor:
- Functional components en React hooks
- TypeScript best practices
- Tailwind CSS utilities (nooit inline styles)
- Bestandsnaamgeving (PascalCase voor components, camelCase voor utils)
- Folder structuur (/app, /components, /lib)
- Comments in het Nederlands
- Keine `any` types

Output het volledige .cursorrules bestand klaar om te copy-pasten.
```

Wacht op Cursor's antwoord.

### Stap 3.3: Copy de output

Cursor geeft je het complete .cursorrules bestand.

Selecteer alle code (Ctrl+A in de chat output) en kopieer het.

### Stap 3.4: Maak .cursorrules bestand

1. Rechtsklik op de root folder in de left sidebar
2. Klik "New File"
3. Noem het `.cursorrules` (met punt aan het begin!)
4. Plak de content

Save het bestand (Ctrl+S).

**Checkpoint 4:** `.cursorrules` bestand bestaat in je project root met goede guidelines.

**Request Budget: 1 van ~7 used**

---

## Stap 4: Hero Component met Composer (20 minuten)

### Stap 4.1: Maak component file

1. Rechtsklik op de `app` folder
2. "New File"
3. Noem het `app/components/Hero.tsx`

(Dit maakt automatisch de `components` subfolder)

### Stap 4.2: Open Composer

Met het Hero.tsx file open, druk **Ctrl+Shift+I** (Windows/Linux) of **Cmd+Shift+I** (Mac).

De Composer panel opent.

### Stap 4.3: Geef instructie aan Composer

In Composer, typ:

```
Maak een Hero component (TypeScript, React functional component) met:
- Grote h1 heading: "Welkom bij Cursor"
- Subheading met beschrijvende tekst: "Bouw websites snel met AI"
- Een CTA button: "Aan de slag" (link naar #features)
- Responsive design: Tailwind CSS (md: breakpoint)
- Flexbox voor verticale centrering
- Dark mode compatible (dark: classes)
- Gradient background (blauw naar paars)
- Geen external dependencies

Geef alleen de component code, geen imports of exports statements voor buiten.
```

Cursor genereert het component.

### Stap 4.4: Accept of refine

Review de getoonde code. Klik **Accept All** (groene knop) om het in je bestand in te voegen.

**Checkpoint 5:** Hero.tsx file bevat een werkend Hero component met juiste structuur.

**Request Budget: 2 van ~7 used**

---

## Stap 5: Feature Cards Component met Composer (20 minuten)

### Stap 5.1: Maak component file

1. Rechtsklik op `app` folder
2. "New File"
3. Noem het `app/components/FeatureCards.tsx`

### Stap 5.2: Open Composer

Druk **Ctrl+Shift+I** in dit nieuwe bestand.

### Stap 5.3: Composer prompt

```
Maak een FeatureCards component (TypeScript, React) dat:
- Een grid van 3 feature cards toont
- Responsive: 1 kolom op mobile, 3 kolommen op desktop (Tailwind grid)
- Elke card heeft:
  * Een icon uit lucide-react (Package, Zap, Layers)
  * Een h3 title
  * Een description text
- Hover effect: transform scale-105 en shadow toename
- Cards hebben border en padding (Tailwind)
- Dark mode ready
- lucide-react is geïmporteerd bovenaan

Geef alleen de component code.
```

Composer genereert het component.

### Stap 5.4: Accept

Klik **Accept All**.

### Stap 5.5: Install lucide-react

In je Cursor Terminal (Ctrl+`):

```bash
npm install lucide-react
```

Wacht tot npm klaar is.

**Checkpoint 6:** FeatureCards.tsx werkt, lucide-react is geïnstalleerd.

**Request Budget: 3 van ~7 used**

---

## Stap 6: Integreer in Homepage (5 minuten)

### Stap 6.1: Open `app/page.tsx`

Dit is je homepage.

### Stap 6.2: Update de content

Vervang de bestaande content (of voeg toe aan het bestand) met:

```typescript
import Hero from './components/Hero';
import FeatureCards from './components/FeatureCards';

export default function Home() {
  return (
    <main className="min-h-screen">
      <Hero />
      <section className="py-20 bg-gray-50 dark:bg-gray-900">
        <div className="container mx-auto px-4">
          <h2 className="text-4xl font-bold mb-12 text-center">Features</h2>
          <FeatureCards />
        </div>
      </section>
    </main>
  );
}
```

Save (Ctrl+S).

### Stap 6.3: Test in browser

In Cursor Terminal:

```bash
npm run dev
```

Open `http://localhost:3000` in je browser.

Je ziet nu: Hero → Features section met 3 cards.

**Checkpoint 7:** Website draait lokaal en ziet er netjes uit.

---

## Stap 7: Styling Refinement met Inline Edit (15 minuten)

Nu gebruiken we **Inline Edit** (Ctrl+K) voor kleine styling tweaks.

### Stap 7.1: Hero button styling

1. Open `app/components/Hero.tsx`
2. Klik ergens in de button JSX
3. Druk **Ctrl+K**
4. Type:

```
Voeg een hover effect toe aan de button:
- Scale slightly bigger on hover
- Change background color smoothly
- Add smooth transition
```

5. Review de suggestie, klik Accept

### Stap 7.2: Card shadows verbeteren

1. Open `app/components/FeatureCards.tsx`
2. Selecteer een card div
3. Druk **Ctrl+K**
4. Type:

```
Voeg een mooier shadow effect toe aan de cards:
- Larger shadow on hover
- Smooth transition
- Better depth perception
```

5. Accept

### Stap 7.3: Typography verbeteren

1. Open `app/page.tsx`
2. Druk **Ctrl+K**
3. Type:

```
Maak de "Features" heading groter en mooier:
- Groter font size
- Betere kleur gradient
```

5. Accept

Refresh je browser (F5) om de changes te zien.

**Checkpoint 8:** Styling ziet er gepolijst uit, hover effects werken.

**Request Budget: 4-5 van ~7 used**

---

## Stap 8: Git Commit (5 minuten)

### Stap 8.1: Open Source Control

Druk **Ctrl+Shift+G** in Cursor.

Source Control panel opent links.

### Stap 8.2: Stage alle bestanden

Klik op het **+** icoon bij "Changes" of druk **Ctrl+Shift+A**.

Alle bestanden worden staged (groen).

### Stap 8.3: Write commit message

In het message veld, typ:

```
feat: Build Hero and FeatureCards components with Cursor Composer
```

### Stap 8.4: Commit

Druk **Ctrl+Enter** of klik de ✓ button.

Je commit is gemaakt!

**Checkpoint 9:** Git commit is succesvol (geen errors).

---

## Keyboard Shortcuts Reference

| Actie | Windows | Mac |
|-------|---------|-----|
| **Cursor Chat** | Ctrl+L | Cmd+L |
| **Composer** | Ctrl+Shift+I | Cmd+Shift+I |
| **Inline Edit (quick fix)** | Ctrl+K | Cmd+K |
| **Terminal** | Ctrl+` | Cmd+` |
| **Command Palette** | Ctrl+Shift+P | Cmd+Shift+P |
| **Source Control** | Ctrl+Shift+G | Cmd+Shift+G |
| **Save** | Ctrl+S | Cmd+S |
| **Tab Completion** | Tab | Tab |

---

## Request Budget Tracking

Je hebt **~7 requests** beschikbaar in deze les:

| Fase | Type | Requests |
|------|------|----------|
| cursorrules generatie | Chat | 1 |
| Hero Component | Composer | 1 |
| FeatureCards Component | Composer | 1 |
| Button styling tweak | Inline Edit | 0.5 |
| Card styling tweak | Inline Edit | 0.5 |
| Typography tweak | Inline Edit | 0.5 |
| Buffer/extra | - | 2.5 |

**💡 Pro tip:** Gebruik **Tab Completion** (gratis!) voor:
- Imports toevoegen
- Props schrijven
- Repetitieve code (zelfde classNames herhalen)

---

## Troubleshooting

### Probleem: "Module not found: lucide-react"
**Oplossing:**
```bash
npm install lucide-react
npm run dev
```
(Herstart je dev server na npm install)

### Probleem: Composer stelt rare dingen voor
**Oplossing:** Wees specifieker in je prompt. Verwijs naar bestaande code:
- "Voeg lucide-react icons toe" (voldoende duidelijk)
- "Zorg dat het met TypeScript werkt" (specifieer)

### Probleem: Inline Edit accepteert niet
**Oplossing:** Klik de groene ✓ knop of druk Ctrl+Enter

### Probleem: `npm run dev` geeft error
**Stappen:**
1. Controleer dat je in de juiste folder bent: `pwd`
2. Controleer node versie: `node --version` (moet 18+ zijn)
3. Verwijder en herinstalleer dependencies:
   ```bash
   rm -rf node_modules package-lock.json
   npm install
   npm run dev
   ```

### Probleem: Port 3000 al in gebruik
```bash
npm run dev -- -p 3001
# Openen: http://localhost:3001
```

### Probleem: Git werkt niet
**Controleer:**
- Ben je in de juiste folder? `pwd` moet je project folder zijn
- Bestaat `.git` folder? `ls -la .git`
- Zijn je bestanden getracked? `git status`

---

## Checklist - Vinkje alles af voor je klaar bent

- [ ] Git init en create-next-app uitgevoerd
- [ ] Cursor Skills (Next.js, React, Tailwind) geactiveerd
- [ ] `.cursorrules` bestand gegenereerd en in root geplaatst
- [ ] `app/components/Hero.tsx` aangemaakt met Composer
- [ ] `app/components/FeatureCards.tsx` aangemaakt met Composer
- [ ] lucide-react geïnstalleerd via npm
- [ ] Componenten geïmporteerd in `app/page.tsx`
- [ ] `npm run dev` draait zonder errors
- [ ] Website ziet er goed uit op http://localhost:3000
- [ ] Styling verfijnd met Inline Edit (minimaal 2 aanpassingen)
- [ ] Git commit gemaakt met duidelijke message
- [ ] Alle bestanden zijn saved (geen rode stippen in sidebar)

---

## Volgende stappen

**Voor volgende les:**
- Zorg dat `npm run dev` nog werkt
- Download het huiswerk zip bestand van Teams (les3-debug-challenge.zip)
- Voorkom dat je project files verwijdert/opslaanslecht

**Veel succes! 🚀**
