An awesome tour booking site built on top of NodeJS.
Demo • Key Features • Demonstration • How To Use • Build With • Installation • Known Bugs • Future Updates • Acknowledgement
Live demo (Feel free to visit) 👉 : https://natours-website-app.herokuapp.com/
Current Frontend build with NextJs demo (Feel free to visit) 👉 : https://natours-next-js.vercel.app/
- Authentication and Authorization
- Login and logout
- Tour
- Manage booking
- check tours map
- check user's reviews
- check user's rating
- User profile
- Update username
- Update user profile photo
- Update email and password
- Online Payment
- Book tours by paying online through Stripe
- Login to the site
- Search for tours that you want to book
- Book a tour
- Proceed to the payment checkout page
- Enter the card details (Test Mood):
- Card No. : 4242 4242 4242 4242 - Expiry date: 02 / 22 - CVV: 222 - Select USA For Country and Enter any address random xyz address
- Finished!
- Check the tour you have booked in "Manage Booking" page in your user settings.
- You'll be automatically redirected to Manage Booking page after you have completed the booking.
- You can update your own username, profile photo, email and password.
- NodeJS - JS runtime environment
- Express - The web framework used
- Mongoose - Object Data Modelling (ODM) library
- MongoDB Atlas - Cloud database service
- Pug - High performance template engine
- JSON Web Token - Security token
- ParcelJS - Blazing fast, zero configuration web application bundler
- Stripe - Online payment API
- Postman - API testing
- Mailtrap & Sendgrid - Email delivery platform
- Heroku - Cloud platform
- Husky - Husky improves commits
- Eslint - Help us to Find and fix problems in your JavaScript
- Prettier - Code formatter
You can fork the app or you can git-clone the app into your local machine. Once done that, please install all the dependencies by running
$ npm i
set your env variables
$ npm run watch:js
$ npm run build:js
$ npm run start:dev (for development)
$ npm run start:prod (for production)
$ npm run debug (for debug)
-
Frontend
- Build the frontend in NextJs framework.
- Create whole frontend application in react functional component with typescript only.
- Improve overall UX/UI and make it responsive
- Show the most popular and viewed tour among travellers.
- Allow user to add a review directly at the website after they have taken a tour
-
Backend
- confirm user email, login with refresh token, 2FA
- Prevent duplicate bookings after user has booked that exact tour, implement favorite tours
- Try to migrate the backend from javascript to typescript
- Add cloudFront so that we can upload image there.
-
Scalable & Deployment
- Create CI/CD pipeline
- Create a Docker Image
- Deploy the backend on vercel.
- Many More ! There's always room for improvement!
Feel free to email me at [email protected] if you run into any issues or have questions, ideas or concerns. Please enjoy and feel free to share your opinion, constructive criticism, or comments about my work. Thank you! 🙂
- This project is part of the online course I've taken at Udemy. Thanks to Jonas Schmedtmann for creating this awesome course! Link to the course: Node.js, Express, MongoDB & More: The Complete Bootcamp 2019