Explore and book your next adventure with the Natours API, a RESTful web service designed to bring travel enthusiasts and tour vacations together. Built with Node.js and MongoDB, this project showcases the application of modern web development technologies to create a dynamic and user-friendly experience.
The Natours API powers a full-stack application that caters to individuals who crave travel and tour vacations. It provides various services such as viewing and booking tours, leaving reviews, and more. Every tour is carefully curated to ignite the adventurous spirit in each user. Users can browse through the available tours, delve into detailed information about each tour, and upon signing up or logging in, book the tour of their choice. This API is built as a pet project, aimed at refining the developer's full-stack web development skills.
The Natours API leverages a robust set of tools and technologies to deliver a seamless user experience:
- HTML: Structures and contents of web pages.
- CSS: Styling of web pages.
- Pug: Template engine for dynamic web page generation.
- JavaScript: Provides interactivity and API request handling.
- Node.js: Server-side JavaScript execution.
- Express: A Node.js framework to simplify building complex server-side applications.
- MongoDB: Database for persistent data storage.
- Mongoose: A MongoDB object modeling tool.
- Mapbox: Map service for displaying tour locations.
- Stripe: Payment processing system.
- JSON Web Token (JWT): User authentication.
- Nodemailer & Brevo: Email services for communication with users.
- MailTrap: Email debugging tool in development environment.
Clone the project
git clone https://github.com/OlehK25/natours-advanced.git
Install all necessary dependencies as defined in the package.json file.
npm install
Parcel build:
npm run build:js
Start the server (dev)
npm start
Start the server (prod)
npm run start:prod
Set up accounts with MongoDB, Mapbox, Stripe, Brevo, and MailTrap if you haven't already.
No known issues are present as of now. Future improvements will be based on user feedback and developer insights. Check the issues section on the GitHub page for updates.
Extensive documentation with examples here