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
- Maak een repository aan genaamd mern-workout
- Clone je repository op je laptop en open in VSCode
- In de folder mern-workout maak je folder backend
Open in VS Code
- Open Visual Studio Code
- File β Open Folder
- 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
-y?
- Betekent "yes" - beantwoordt alle vragen automatisch
- Zonder
-ymoet 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"
}
"type": "module"- Gebruik moderne JavaScript (import/export)"main": "server.js"- Startpunt van je app"scripts"- Commando's metnpm 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_modulesfolder package.jsonwordt 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
- Maak nieuw bestand in VS Code
- Sla op als .env (met punt!)
- Voeg toe:
# Server configuratie
PORT=4000
# MongoDB (later invullen)
MONGO_URI=
# Development of production
NODE_ENV=development
PORT=4000- Server draait op poort 4000MONGO_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
- Maak nieuw bestand
- Sla op als .gitignore
- 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
- Maak nieuw bestand
- Sla op als server.js
- 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}`);
});
import express- Haal Express binnenconst app = express()- Maak Express appconst PORT = ...- Haal poort uit .envapp.use(express.json())- Kan JSON ontvangenapp.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 -ygedaan- package.json aangepast ("type": "module")
- Express, Mongoose, CORS geΓ―nstalleerd
- .env bestand gemaakt
- .gitignore gemaakt
- server.js gemaakt
npm run devwerkt- 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.
Bouw API endpoints voor je applicatie