# Les 11: Van Idee naar Prototype

---

## Hoofdstuk
**Deel 3: Full-Stack Development** (Les 9-12)

## Beschrijving
Proces van vaag idee naar werkend prototype. Feature breakdown, component thinking, MVP planning, user stories, en voorbereiding op eindproject. Kiezen van eindproject idea en architectuur opzetten.

---

## Te Behandelen (~45 min)

- Hoe ga je van vaag idee naar concrete features?
- Feature breakdown method en AI-hulp
- Component thinking: UI opdelen in herbruikbare stukken
- MVP (Minimum Viable Product) denken
- User stories schrijven (As a user I want to...)
- Prioritizing features: must-have, nice-to-have, later
- Database schema planning voor je idee
- Project architecture design
- Folder structure planning
- Eindproject idee kiezen (vereenvoudigde versie)

---

### Van Idee naar Feature Breakdown

**Stap 1: Beschrijf je idee in 1 zin**
```
"Ik wil een app waar je recepten kan zoeken op basis van ingrediënten die je hebt"
```

**Stap 2: Werk uit wat gebruikers willen**
```
User stories:
- Als gebruiker wil ik ingrediënten kunnen invoeren
- Als gebruiker wil ik recepten suggesties krijgen
- Als gebruiker wil ik recepten kunnen opslaan
```

**Stap 3: Break down in features**
```
Core Features:
- Ingredient input form
- Recipe search/filter
- Save favorites
- View saved recipes

Nice-to-have:
- Meal planning
- Shopping list generator
- Nutritional info
- Export recipes
```

**Stap 4: Prioriteer (MVP)**
- ✅ Input form + recipe search
- ✅ Display results
- ✅ Save/favorites
- ❌ Shopping list (later)
- ❌ Meal planning (later)

---

### Component Thinking

**Visualiseer je app:**
```
App
├── Header
├── SearchForm (input + submit)
├── RecipeList
│   └── RecipeCard (repeated)
│       ├── Title
│       ├── Ingredients
│       ├── Favorite button
│       └── View details
└── Footer
```

**Questions to ask:**
- Welke componenten worden herhaald?
- Welke componenten zijn child components?
- Welke componenten hebben state?
- Waar gaat data vandaan?

---

### MVP Denken

**MVP = Minimum Viable Product**

Het eenvoudigst mogelijke product dat nog steeds waarde levert.

**❌ Niet MVP:**
- Alle features tegelijk
- Perfect design met animaties
- Geavanceerde filters
- Social features

**✅ Wel MVP:**
- Core functionaliteit werkt
- Basis styling (Tailwind)
- Happy path werkt
- Data persists (database)

---

### Database Planning

**Voor recipe app:**
```
users table:
- id, email, password_hash, created_at

recipes table:
- id, title, ingredients, instructions, created_at

favorites table:
- id, user_id, recipe_id, created_at
```

**Relations:**
- users → favorites (one-to-many)
- users → saved_recipes (one-to-many)
- recipes → favorites (one-to-many)

---

## Tools
- Cursor
- ChatGPT (voor planning)
- Pen & papier (voor sketches)

---

## Lesopdracht (2 uur, klassikaal)

### Kies je Eindproject & Plan Architectuur

**Groepsdiscussie (15 min):**
Bespreek klassikaal de styling ervaringen uit Les 10 - welke Tailwind en shadcn/ui patterns werkten goed?

**Deel 1: Idee Kiezen (30 min)**

Kies één van deze projecten OF je eigen idee (met goedkeuring docent):
- **AI Recipe Generator** - Input: ingredients, Output: recipe suggestions + cooking tips
- **Smart Budget Buddy** - Track expenses, AI insights on spending patterns
- **Travel Planner AI** - Generate itineraries based on preferences
- **Study Buddy AI** - Quiz generation, note-taking, Q&A helper
- **Jouw eigen idee**

**Deel 2: Feature Breakdown (30 min)**

Voor je gekozen project:
1. Schrijf project description (2-3 zinnen)
2. Maak 3-5 user stories
3. Break down in core vs nice-to-have features
4. Selecteer MVP (wat is essentieel?)

**Deel 3: Architecture Planning (45 min)**

1. Schets database schema
2. List de main components
3. Plan folder structure
4. Identify donde AI integreert (tool calling? Chat? Completion?)

**Deel 4: Start Codebase (15 min)**

1. Maak GitHub repo
2. Create-next-app setup
3. Push initial commit

### Deliverable
- Project description document
- Feature breakdown met user stories
- Database schema diagram (hand-drawn ok)
- Component tree visualization
- GitHub repo met initial setup

---

## Huiswerk (2 uur)

### Bouw Basis Architecture

**Deel 1: Folder Structure (30 min)**

Create proper folder structure:
- src/components/ui/
- src/components/features/
- src/lib/
- src/hooks/
- src/types/
- docs/

**Deel 2: Type Definitions (30 min)**

Schrijf TypeScript types voor je project:
- User type
- Main data types
- API response types

**Deel 3: Component Skeleton (1 uur)**

Maak skeleton components:
- Main layout
- 3-4 main feature components (without logic)
- Proper props interfaces
- Basic Tailwind styling

### Deliverable
- GitHub commits met folder structure
- types/ folder met je data types
- Skeleton components
- README.md met project description

---

## Leerdoelen

Na deze les kan de student:
- Een project idee van vaag naar concreet uitwerken
- User stories schrijven
- Feature breakdown maken
- MVP bepalen
- Database schema ontwerpen
- Component architecture plannen
- Project codebase opzetten
- TypeScript types structureren
- Voorbereiding maken op verdere implementatie
