Note: This is a Learning Project demonstrating a complete full-stack workflow, from API design to server-side rendering and payment integration.
Natours is a modern application for booking customizable nature tours. It serves as a showcase for advanced Node.js concepts including authentication, security, payments, and data modeling.
- JWT Authentication: Secure stateless authentication using JSON Web Tokens.
- Login & Signup: Premium glassmorphism UI for user access.
- Security: Rate limiting, brute-force protection, and data sanitization (XSS, NoSQL injection).
- Stripe Integration: Secure credit card processing using Stripe Checkout.
- Dynamic Bookings: Automatic booking creation upon successful payment confirmation.
- Interactive Maps: Leaflet.js integration to show tour locations.
- Premium UI: Custom animations (
zoomInSlow,slideInUp), glassmorphism cards, and gradient reveals.
- MVC Pattern: Organized structure with Models, Views, and Controllers.
- API Features: Advanced filtering, sorting, pagination, and aliasing.
- Error Handling: Centralized error controller for global error management.
Detailed documentation is available in the docs/ folder:
| Doc | Description |
|---|---|
| 🚀 Getting Started | Setup, Config, and Running the app. |
| 🏗️ Architecture | Deep dive into Models, MVC, and API structure. |
| 👨💻 Author | About the creator. |
This project implements the following technologies defined in package.json:
- Core:
Node.js,Express - Database:
MongoDB,Mongoose - Frontend:
Pug,Parcel(Bundler) - Payments:
Stripe - Utils:
Nodemailer(Email),Multer(File Uploads),Sharp(Image Processing) - Security:
Helmet,HPP,XSS-Clean,BcryptJS
- Clone & Install:
git clone https://github.com/Shivam56291/natours-node-learning-project.git npm install
- Configure:
Create
config.env(See Getting Started). - Run:
npm run start:dev
Built by Shivam, BCA 5th Sem