An awesome tour booking site built on top of NodeJS.
Demo • Key Features • Demonstration • How To Use • API Usage • Deployment • Build With • To-do • Installation • Known Bugs • Future Updates • Acknowledgement
-
Authentication and Authorization
- Sign up, Log in, Logout, Update, and reset password.
- User profile management.
- Roles: regular user, admin, lead guide, guide.
-
Tour Management
- Booking tours, checking tour maps, user reviews, and ratings.
- Admins and lead-guides can create, update, and delete tours.
-
Booking Management
- Regular users can book and manage their tours.
- Admins and lead guides have full control over bookings.
-
Review Management
- Regular users can write, edit, and delete reviews.
- Admins can delete any review.
-
Credit Card Payment
- Users can bay with any credit card company.
- Sign Up to the site
- Search for tours
- Book a tour and proceed to payment checkout
- Check the "Manage Booking" page in your user settings.
- Update username, profile photo, email, and password.
- Set environment variables in Postman for development or production.
- Check Natours API Documentation.
- Deploy with Render:
git init
git add -A
git commit -m "Commit message"
parcel build ./public/js/index.js --out-dir ./public/js --out-file bundle.js
Follow instructions on this link: https://www.freecodecamp.org/news/how-to-deploy-nodejs-application-with-render
And Make Sure to: 1-In Render for start command use node server.js and for build command and leave npm install or change yarn to it
2-config.env file you should copy to Render secret file, render will by default SET NOD_ENV to production, there is no need to change anything in env file OR 2-pass the Enviroment Variables that's in config.env file manually in options if Render Secret file didn't find the port
3-Region (EU) as it's the same to that in mongodb
- NodeJS
- Express
- Mongoose
- MongoDB Atlas
- Pug
- JSON Web Token
- ParcelJS
- Stripe
- Postman
- Mailtrap
- Sendgrid
- Heroku
- Mapbox
- Review and rating improvements
- Advanced authentication features
- Enable PWA
- UX/UI improvements
- Clone the repo.
- Navigate to the repo.
- Install dependencies from
package.json
. - Set up accounts for MongoDB, Mapbox, Stripe, Sendgrid, Mailtrap.
- Set environment variables in
.env
file.
- Fork or clone the app.
- Install dependencies:
npm i
- Set environment variables.
- Run:
npm run watch:js npm run build:js npm run dev (for development) npm run start:prod (for production) npm run debug (for debug) npm start
- Set up ESLint and Prettier in VS Code:
npm i eslint prettier eslint-config-prettier eslint-plugin-prettier eslint-config-airbnb eslint-plugin-node eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react --save-dev
Pull requests are welcome. Please open an issue to discuss changes before making them.
Email Mustafa Ahmad for issues or questions.
- Enable PWA
- Improve UX/UI
- Featured Tours
- Recently Viewed Tours
This project is open-sourced under the MIT license.
Natours Live demo: https://natours-hclr.onrender.com/