Skip to content

This repo contains my version of the Natours project, a tour booking web app that I learned to build by taking the Node.js course on Udemy by Jonas Schmedtmann. The app uses Node.js, Express and MongoDB to create a RESTful API and a dynamic website. The app also implements authentication, authorization, security, payments and email features.

Shehab1110/natours-project

Repository files navigation

Natours

Node.js badge Express badge MongoDB badge

Natours is a tour booking web app that I created as part of the Node.js course on Udemy by Jonas Schmedtmann. The app uses Node.js, Express and MongoDB to create a RESTful API and a dynamic website. The app also implements authentication, authorization, security, payments and email features.

🚀 Getting Started

To run this project locally, you need to have Node.js and MongoDB installed on your machine.

Prerequisites

  • Node.js
  • MongoDB
  • NPM or Yarn

Installation

  1. Clone this repo to your local machine using git clone https://github.com/<your-username>/natours.git.
  2. Go to the project directory using cd natours.
  3. Install the dependencies using npm install or yarn install.
  4. Create a .env file in the root folder and add the following environment variables:

NODE_ENV=development PORT=3000 DATABASE=<your-mongodb-connection-string> DATABASE_PASSWORD=<your-mongodb-password> JWT_SECRET=<your-jwt-secret> JWT_EXPIRES_IN=90d JWT_COOKIE_EXPIRES_IN=90 EMAIL_USERNAME=<your-email-username> EMAIL_PASSWORD=<your-email-password> EMAIL_HOST=<your-email-host> EMAIL_PORT=<your-email-port> EMAIL_FROM=<your-email-address> STRIPE_SECRET_KEY=<your-stripe-secret-key>

Run the app using npm start or yarn start.
Open your browser and go to http://localhost:3000.

✨ Features

User registration and login with JWT authentication
Password reset with email verification
User profile update and deletion
User roles and permissions
Tour creation, update, deletion and filtering
Tour image upload and processing
Tour ratings and reviews
Tour booking with Stripe integration
Booking confirmation and invoice email
Error handling and logging

🛠️ Technologies

Node.js
Express
MongoDB
Mongoose
Pug
Sass
Stripe
Nodemailer
Multer
Sharp
Helmet
Morgan
Bcrypt
Jsonwebtoken
Validator

👏 Acknowledgements

This project is based on the Node.js course on Udemy by Jonas Schmedtmann. I would like to thank him for creating this awesome course and teaching me how to build a full-stack web app with Node.js.

About

This repo contains my version of the Natours project, a tour booking web app that I learned to build by taking the Node.js course on Udemy by Jonas Schmedtmann. The app uses Node.js, Express and MongoDB to create a RESTful API and a dynamic website. The app also implements authentication, authorization, security, payments and email features.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published