Wat gaan we maken?

Je gaat een backend server bouwen. Dit is het "achtergrond" gedeelte waar:

  • Data wordt opgeslagen (in een database)
  • Gebruikers kunnen inloggen
  • Je React frontend data kan ophalen
  • Alles veilig verwerkt wordt

πŸ’‘ Voorbeeld

Als je een workout app maakt, bewaart de backend alle workouts in een database. Je React frontend haalt die workouts op via de backend.

Stap 0: Basis Folders Aanmaken

Maak handmatig deze folders:

Windows & Mac

  1. Maak een repository aan genaamd mern-workout
  2. Clone je repository op je laptop en open in VSCode
  3. In de folder mern-workout maak je folder backend

Open in VS Code

  1. Open Visual Studio Code
  2. File β†’ Open Folder
  3. Selecteer de workouts folder (niet backend!)

Terminal openen

In VS Code:

  • Windows/Linux: Ctrl + `
  • Mac: Cmd + `
  • Of: View β†’ Terminal

Navigeer naar backend

cd backend

Je terminal staat nu in backend!

Alle volgende commando's doe je hier.

Stap 1: Mappenstructuur

Maak een professionele structuur voor je backend.

Waarom een goede structuur?

  • Code blijft overzichtelijk
  • Je weet waar elk bestand hoort
  • Makkelijk uitbreiden
  • Samenwerken wordt simpel

De structuur:

workouts/
└── backend/
    β”œβ”€β”€ src/
    β”‚   β”œβ”€β”€ controllers/      # Business logica
    β”‚   β”œβ”€β”€ models/           # Database schemas
    β”‚   β”œβ”€β”€ routes/           # API routes
    β”‚   └── middleware/       # Middleware functies
    └── server.js             # Entry point

Folders aanmaken

In de terminal voor mac gebruikers (als je in backend zit):

mkdir -p src/controllers src/models src/routes src/middleware

In de terminal voor windows gebruikers (als je in backend zit):

mkdir src\controllers src\models src\routes src\middleware

πŸ’‘ Wat betekent dit?

  • controllers/ - Wat gebeurt bij een route
  • models/ - Database schemas
  • routes/ - Welke URLs bestaan
  • middleware/ - Functies tussen verzoeken

Stap 2: NPM Initialiseren

Wat is NPM?

NPM (Node Package Manager) helpt je om:

  • Code van anderen te downloaden
  • Je project te beheren
  • Scripts uit te voeren

Type in de terminal:

npm init -y
Wat doet -y?
  • Betekent "yes" - beantwoordt alle vragen automatisch
  • Zonder -y moet je veel vragen beantwoorden

Gelukt!

Er is nu een package.json bestand aangemaakt.

Stap 3: Package.json Aanpassen

Wat is package.json?

package.json is het "paspoort" van je project met:

  • Naam van je project
  • Welke packages je gebruikt
  • Scripts om server te starten

Open package.json en vervang met:

{
  "name": "mern-workout",
  "version": "1.0.0",
  "description": "MERN Stack Backend",
  "type": "module",
  "main": "server.js",
  "scripts": {
    "dev": "node --watch --env-file=.env server.js",
    "start": "node --env-file=.env server.js"
  },
  "keywords": ["mern", "express", "mongodb"],
  "author": "Jouw Naam",
  "license": "ISC"
}
Belangrijke velden:
  • "type": "module" - Gebruik moderne JavaScript (import/export)
  • "main": "server.js" - Startpunt van je app
  • "scripts" - Commando's met npm run ...
  • "dev" - Start met auto-restart

Let op!

Vergeet niet "type": "module" toe te voegen! Anders krijg je errors bij import.

Stap 4: Dependencies Installeren

Wat zijn dependencies?

Code-pakketten van anderen die jij kunt gebruiken. Bouwblokken in plaats van alles zelf schrijven.

Packages installeren:

1. Express - De basis

npm install express

2. Mongoose - Database

npm install mongoose

3. CORS - Frontend verbinding

npm install cors

πŸ’‘ Wat gebeurt er?

  • NPM downloadt packages
  • Opgeslagen in node_modules folder
  • package.json wordt aangepast

Check je package.json

Je ziet nu onderaan:

"dependencies": {
  "cors": "^2.8.5",
  "express": "^5.0.0",
  "mongoose": "^8.0.0"
}

Stap 5: .env Bestand

Wat is .env?

Een bestand met geheime informatie:

  • Database wachtwoorden
  • API sleutels
  • Configuratie

Bestand aanmaken

  1. Maak nieuw bestand in VS Code
  2. Sla op als .env (met punt!)
  3. Voeg toe:
# Server configuratie
PORT=4000

# MongoDB (later invullen)
MONGO_URI=

# Development of production
NODE_ENV=development
Variabelen uitleg:
  • PORT=4000 - Server draait op poort 4000
  • MONGO_URI - Database link (komt later)
  • NODE_ENV - Development of production

πŸ’‘ Gebruik in code

process.env.PORT leest de waarde uit .env

Stap 6: .gitignore

Wat is .gitignore?

Lijst van bestanden die Git moet negeren bij uploaden:

  • Wachtwoorden (.env)
  • Downloaded packages (node_modules)
  • Tijdelijke bestanden

Bestand aanmaken

  1. Maak nieuw bestand
  2. Sla op als .gitignore
  3. Voeg toe:
# Dependencies
node_modules/

# Geheime info
.env

# OS bestanden
.DS_Store
Thumbs.db

# Editor bestanden
.vscode/
.idea/

BELANGRIJK!

Als je .env naar GitHub pusht, kan iedereen je wachtwoorden zien!

Stap 7: Je Eerste Server

Nu maken we eindelijk de server!

Bestand aanmaken

  1. Maak nieuw bestand
  2. Sla op als server.js
  3. Voeg toe:
// Importeer Express
import express from 'express';

// Maak Express app
const app = express();

// Haal PORT uit .env (of gebruik 4000)
const PORT = process.env.PORT || 4000;

// Middleware: lees JSON
app.use(express.json());

// Test route - reageer op GET /
app.get('/', (req, res) => {
  res.json({ 
    message: 'Mijn eerste backend!',
    success: true
  });
});

// Start de server
app.listen(PORT, () => {
  console.log(`Server draait op http://localhost:${PORT}`);
});
Regel voor regel:
  • import express - Haal Express binnen
  • const app = express() - Maak Express app
  • const PORT = ... - Haal poort uit .env
  • app.use(express.json()) - Kan JSON ontvangen
  • app.get('/', ...) - Route naar /
  • app.listen(PORT, ...) - Start server

Stap 8: Test Je Server!

In de terminal:

npm run dev

Je ziet:

Server draait op http://localhost:4000

Test in browser

Ga naar: http://localhost:4000

Je ziet:

{
  "message": "Mijn eerste backend!",
  "success": true
}

πŸ’‘ Auto-restart werkt!

Verander de message in server.js en sla op. De server herstart automatisch!

Server stoppen

Druk Ctrl + C in de terminal.

Checklist

βœ… Check of je hebt:

  • workouts/backend folders aangemaakt
  • workouts folder geopend in VS Code
  • Terminal: cd backend
  • src/controllers, models, routes folders
  • npm init -y gedaan
  • package.json aangepast ("type": "module")
  • Express, Mongoose, CORS geΓ―nstalleerd
  • .env bestand gemaakt
  • .gitignore gemaakt
  • server.js gemaakt
  • npm run dev werkt
  • Browser toont JSON op localhost:4000

Je Project Structuur

workouts/
└── backend/
    β”œβ”€β”€ src/
    β”‚   β”œβ”€β”€ controllers/
    β”‚   β”œβ”€β”€ models/
    β”‚   β”œβ”€β”€ routes/
    β”‚   └── middleware/
    β”œβ”€β”€ node_modules/
    β”œβ”€β”€ .env
    β”œβ”€β”€ .gitignore
    β”œβ”€β”€ package.json
    β”œβ”€β”€ package-lock.json
    └── server.js

Problemen oplossen

❌ "Cannot find module 'express'"

Oorzaak: Express niet geΓ―nstalleerd

Oplossing: npm install express

❌ "Cannot use import statement"

Oorzaak: Geen "type": "module" in package.json

Oplossing: Voeg "type": "module" toe

❌ "Port 4000 is already in use"

Oorzaak: Poort al in gebruik

Oplossing: Stop oude server (Ctrl+C) of verander PORT in .env

Volgende Stap

Je eerste server draait! Nu gaan we routes en API endpoints toevoegen.

Server & Routes β†’

Bouw API endpoints voor je applicatie