{"id":18056992,"url":"https://github.com/khaledgadelhaq/natours","last_synced_at":"2026-04-09T06:44:03.643Z","repository":{"id":256411576,"uuid":"855056535","full_name":"khaledGadelhaQ/Natours","owner":"khaledGadelhaQ","description":"Natours - A modern website for booking tours online.","archived":false,"fork":false,"pushed_at":"2024-10-31T00:33:43.000Z","size":50430,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-11T09:32:02.436Z","etag":null,"topics":["api","brevo","css","esbuild","express","html","javascript","jwt","leaflet","mailtrap","mongodb","mongodb-atlas","mongoose","nodejs","postman","pug","pug-template-engine","render","stripe-checkout"],"latest_commit_sha":null,"homepage":"https://natours-5bpr.onrender.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/khaledGadelhaQ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-10T08:23:27.000Z","updated_at":"2024-10-31T00:33:47.000Z","dependencies_parsed_at":"2024-10-31T01:34:47.577Z","dependency_job_id":null,"html_url":"https://github.com/khaledGadelhaQ/Natours","commit_stats":null,"previous_names":["khaledgadelhaq/natours"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/khaledGadelhaQ/Natours","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaledGadelhaQ%2FNatours","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaledGadelhaQ%2FNatours/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaledGadelhaQ%2FNatours/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaledGadelhaQ%2FNatours/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khaledGadelhaQ","download_url":"https://codeload.github.com/khaledGadelhaQ/Natours/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khaledGadelhaQ%2FNatours/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278343088,"owners_count":25971399,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","brevo","css","esbuild","express","html","javascript","jwt","leaflet","mailtrap","mongodb","mongodb-atlas","mongoose","nodejs","postman","pug","pug-template-engine","render","stripe-checkout"],"created_at":"2024-10-31T02:06:00.867Z","updated_at":"2025-10-04T16:59:43.712Z","avatar_url":"https://github.com/khaledGadelhaQ.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://natours-5bpr.onrender.com\"\u003e\u003cimg src=\"https://github.com/khaledGadelhaQ/Natours/blob/main/public/img/logo-green-round.png\" alt=\"Natours\" width=\"200\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://natours-5bpr.onrender.com\"\u003eNatours\u003c/a\u003e\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eAn awesome tour booking site built on top of \u003ca href=\"https://nodejs.org/en/\" target=\"_blank\"\u003eNodeJS\u003c/a\u003e.\u003c/h4\u003e\n\n\u003cp align=\"left\"\u003e\n  \u003ca href=\"#key-features-\"\u003e • Key Features\u003c/a\u003e \u003cbr\u003e\n  \u003ca href=\"#build-with-\"\u003e • Build With\u003c/a\u003e \u003cbr\u003e\n  \u003ca href=\"#demonstration-\"\u003e • Demonstration\u003c/a\u003e \u003cbr\u003e\n  \u003ca href=\"#deployed-version-\"\u003e • Live\u003c/a\u003e \u003cbr\u003e\n  \u003ca href=\"#how-to-use-\"\u003e • How To Use\u003c/a\u003e \u003cbr\u003e\n  \u003ca href=\"#api-usage\"\u003e • API Usage\u003c/a\u003e \u003cbr\u003e\n  \u003ca href=\"#installation-\"\u003e • Installation\u003c/a\u003e \u003cbr\u003e \n  \u003ca href=\"#contributing-\"\u003e • Contributing\u003c/a\u003e \u003cbr\u003e \n  \u003ca href=\"#future-updates-\"\u003e • Future Updates\u003c/a\u003e \u003cbr\u003e \n  \u003ca href=\"#acknowledgement-\"\u003e • Acknowledgement\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Key Features 📝\n\n- Authentication and Authorization\n  - Sign up, Log in, log out, Update, and reset password.\n  - A user can be either a regular user or an admin or a lead guide or a guide.\n- User profile\n  - Update username, photo, email, password, and other information\n  - When a user signs up, that user by default regular user.\n- Tour\n  - Manage booking, check tour map, check users' reviews and rating\n  - Tours can be seen by every user.\n  - Admins and tour guides can create, update, and delete tours\n- Bookings\n  - Only regular users can book tours (make a payment).\n  - Regular users can not book the same tour twice.\n  - Regular users have an overview of all the tours that they have booked.\n  - Admins and tour guides can create, update, and delete any booking\n- Reviews\n  - Only regular users can write reviews for tours that they have booked.\n  - All users can see the reviews of each tour.\n  - An admin can delete any review.\n- Credit card Payment\n\n## Build With 🏗️\n\n- [Node.js](https://nodejs.org/en/) - JavaScript runtime for building the backend and handling server-side logic.\n- [Express](http://expressjs.com/) - Minimalist web framework for Node.js.\n- [Mongoose](https://mongoosejs.com/) - ODM library for MongoDB to manage application data.\n- [MongoDB Atlas](https://www.mongodb.com/cloud/atlas) - Managed cloud database service for MongoDB.\n- [Pug](https://pugjs.org/api/getting-started.html) - High-performance template engine for dynamic content rendering.\n- [JWT](https://jwt.io/) - Secure token-based authentication and authorization.\n- [ESBuild](https://esbuild.github.io/) - Fast bundler for optimizing project assets.\n- [Stripe](https://stripe.com/) - API for secure online payments.\n- [Postman](https://www.getpostman.com/) - API testing tool.\n- [Mailtrap](https://mailtrap.io/) \u0026 [Brevo](https://www.brevo.com/) - Services for email testing and production delivery.\n- [Render](https://render.com/) - Cloud platform for deployment.\n- [Leaflet](https://leafletjs.com/) - Library for interactive maps.\n\n---\n\n## Demonstration 🖥️\n\n#### Home Page :\n\n![HomePage](https://github.com/khaledGadelhaQ/Natours/blob/main/public/Demo/homePage.gif)\n\n#### Tour Details :\n\n![TourPage](https://github.com/khaledGadelhaQ/Natours/blob/main/public/Demo/tourOverview.gif)\n\n#### Payment Process :\n\n![Payment](https://github.com/khaledGadelhaQ/Natours/blob/main/public/Demo/payment.gif)\n\n#### Booked Tours :\n\n![BookedTours](https://github.com/khaledGadelhaQ/Natours/blob/main/public/Demo/bookedTours.gif)\n\n#### User Profile :\n\n![UserProfile](https://github.com/khaledGadelhaQ/Natours/blob/main/public/Demo/userProfile.gif)\n\n#### Admin Profile :\n\n![AdminProfile](https://github.com/khaledGadelhaQ/Natours/blob/main/public/Demo/adminProfile.gif)\n\n---\n\n## Deployed Version 🚀\n\n  Live demo (Feel free to visit) 👉🏻 : https://natours-5bpr.onrender.com/\n  \n---\n\n## How To Use 🤔\n\n### Book a tour\n\n- Sign up/Login to the site\n- Search for tours that you want to book\n- Book a tour\n- Proceed to the payment checkout page\n- Enter the card details (Test Mood):\n  ```\n  - Card No. : 4242 4242 4242 4242\n  - Expiry date: 02 / 22\n  - CVV: 222\n  ```\n- Finished!\n\n### Manage your booking\n\n- Check the tour you have booked on the \"Manage Booking\" page in your user settings. You'll be automatically redirected to this\n  page after you have completed the booking.\n\n### Update your profile\n\n- You can update your own username, profile photo, email, and password.\n\n---\n\n## API Usage\n\nBefore using the API, you need to set the URL variable in Postman depending on your environment (development or production). \nSimply add:\n```\n- {{URL}} with your hostname as value (Eg. http://127.0.0.1:3000 or http://www.example.com)\n```\n\nCheck [Natours API Documentation]() for more info.\n\n---\n\n## Installation 🛠️\n\nYou can fork the app or you can git-clone the app into your local machine. Once done, please install all the\ndependencies by running\n\n```\n$ npm i\nSet your env variables\n$ npm run watch\n$ npm run build\n$ npm run dev (for development)\n$ npm run start:prod (for production)\nSetting up ESLint and Prettier in VS Code 👇🏻\n$ npm i eslint prettier eslint-config-prettier eslint-plugin-prettier eslint-config-airbnb eslint-plugin-node\neslint-plugin-import eslint-plugin-jsx-a11y  eslint-plugin-react --save-dev\n```\n\n\n---\n\n\n## Contributing 💡\n\nPull requests are welcome but please open an issue and discuss what you will do before 😊\n\n\n---\n\n\n## Future Updates 🪴\n\n- Advanced Authentication features\n   - Two-factor authentication\n   - Confirm email\n   - Keeping users logged in by using refresh tokens\n- Improve overall UX/UI and fix bugs\n- Featured Tours\n- Recently Viewed Tours\n- And More! There's always room for improvement!\n\n\n---\n\n## License 📄\n\nThis project is open-sourced under the [MIT license](https://opensource.org/licenses/MIT).\n\n---\n\n\n## Acknowledgement 🙏🏻\n\n- 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 \u0026 More: The Complete Bootcamp 2019](https://www.udemy.com/course/nodejs-express-mongodb-bootcamp/)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhaledgadelhaq%2Fnatours","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhaledgadelhaq%2Fnatours","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhaledgadelhaq%2Fnatours/lists"}