Back to Projects

Natours

Overview

A full-stack tour booking platform where users can browse eco-friendly tours, explore detailed trip pages, create accounts, log in, and book adventures online. Built as part of Jonas Schmedtmann’s Node.js course, the project features production-grade authentication, payments, image processing, and security hardening.

Login Info

Email: laura@example.com
Password: test1234

Tours page

Features

Tech Stack

CategoryTechnology / PackagePurpose / Functionality
Backend Frameworknode, expressServer logic, routing, REST API
Databasemongodb, mongooseData modeling for tours, users, bookings, reviews
Authenticationjsonwebtoken, bcryptjsSecure login, JWT tokens, password hashing
FrontendpugServer-side rendered client interface
PaymentsstripeOnline booking and payment processing
EmailnodemailerSending welcome emails and password resets
MapsmapboxDisplaying tour locations and routes
Securityhelmet, xss-clean, express-rate-limit, hppSecure headers, sanitization, rate limiting, parameter protection
Utilitiesmulter, sharpImage uploads and resizing

Project Structure

natours/
├── public/
│   ├── img/
│   ├── css/
│   └── js/
├── src/
│   ├── controllers/
│   ├── models/
│   ├── routes/
│   ├── utils/
│   ├── dev-data/
│   ├── views/
│   └── app.js
├── server.js
├── config.env
└── package.json

Gallery

Tour page Profile page Payment page