{"id":20597142,"url":"https://github.com/nikhilmandaliya/natours","last_synced_at":"2026-04-09T18:46:26.685Z","repository":{"id":199543780,"uuid":"529569753","full_name":"NikhilMandaliya/Natours","owner":"NikhilMandaliya","description":"Narours: Explore the beauty of world and plan your next adventure effortlessly.","archived":false,"fork":false,"pushed_at":"2023-10-15T15:51:53.000Z","size":33934,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-17T01:07:54.386Z","etag":null,"topics":["express","mapbox","mongodb","mongoose","nodejs","pug","stripe"],"latest_commit_sha":null,"homepage":"","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/NikhilMandaliya.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}},"created_at":"2022-08-27T11:47:09.000Z","updated_at":"2023-10-21T10:47:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"a0a19dd5-c3f7-4d61-aff7-0617d7f55171","html_url":"https://github.com/NikhilMandaliya/Natours","commit_stats":null,"previous_names":["nikhilmandaliya/natours"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikhilMandaliya%2FNatours","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikhilMandaliya%2FNatours/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikhilMandaliya%2FNatours/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikhilMandaliya%2FNatours/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NikhilMandaliya","download_url":"https://codeload.github.com/NikhilMandaliya/Natours/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242231441,"owners_count":20093636,"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","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":["express","mapbox","mongodb","mongoose","nodejs","pug","stripe"],"created_at":"2024-11-16T08:20:31.517Z","updated_at":"2026-04-09T18:46:21.658Z","avatar_url":"https://github.com/NikhilMandaliya.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eNatours\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=\"center\"\u003e\n  \u003ca href=\"#key-features\"\u003eKey Features\u003c/a\u003e •\n  \u003ca href=\"#how-to-use\"\u003eHow To Use\u003c/a\u003e •\n  \u003ca href=\"#build-with\"\u003eBuild With\u003c/a\u003e •\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e • \n  \u003ca href=\"#acknowledgement\"\u003eAcknowledgement\u003c/a\u003e\n\u003c/p\u003e\n\n## Key Features\n\n* Authentication and Authorization\n  - Sign up, Log in, Logout, Update, and reset password.\n* User profile\n  - Update username, photo, email, password, and other information\n  - A user can be either a regular user or an admin or a lead guide or a guide.\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 created by an admin user or a lead-guide.\n  - Tours can be seen by every user.\n  - Tours can be updated by an admin user or a lead guide.\n  - Tours can be deleted by an admin user or a lead-guide.\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 can see all the tours they have booked.\n  - An admin user or a lead guide can see every booking on the app.\n  - An admin user or a lead guide can delete any booking.\n  - An admin user or a lead guide can create a booking (manually, without payment).\n  - An admin user or a lead guide can not create a booking for the same user twice.\n  - An admin user or a lead guide can edit 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  - Regular users can edit and delete their own reviews.\n  - Regular users can not review the same tour twice.\n  - An admin can delete any review.\n* Favorite Tours\n  - A regular user can add any of their booked tours to their list of favorite tours.\n  - A regular user can remove a tour from their list of favorite tours.\n  - A regular user can not add a tour to their list of favorite tours when it is already a favorite.\n* Credit card Payment\n\n## How To Use\n\n### Book a tour\n* 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 Mode):\n  ```\n  - Card No. : 4242 4242 4242 4242\n  - Expiry date: 02 / 22\n  - CVV: 222\n  ```\n* Finished!\n\n\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## Build With\n\n* [NodeJS](https://nodejs.org/en/) - JS runtime environment\n* [Express](http://expressjs.com/) - The web framework used\n* [Mongoose](https://mongoosejs.com/) - Object Data Modelling (ODM) library\n* [MongoDB Atlas](https://www.mongodb.com/cloud/atlas) - Cloud database service\n* [Pug](https://pugjs.org/api/getting-started.html) - High performance template engine\n* [JSON Web Token](https://jwt.io/) - Security token\n* [ParcelJS](https://parceljs.org/) - Blazing fast, zero configuration web application bundler\n* [Stripe](https://stripe.com/) - Online payment API and Making payments on the app.\n* [Postman](https://www.getpostman.com/) - API testing\n* [Mailtrap](https://mailtrap.io/) \u0026 [Sendgrid](https://sendgrid.com/) - Email delivery platform\n* [Heroku](https://www.heroku.com/) - Cloud platform\n* [Mapbox](https://www.mapbox.com/) - Displaying the different locations of each tour.\n\n\n## Setting Up Your Local Environment\n\nIf you wish to play around with the code base in your local environment, do the following\n\n* Clone this repo to your local machine.\n* Using the terminal, navigate to the cloned repo.\n* Install all the necessary dependencies, as stipulated in the package.json file.\n* If you don't already have one, set up accounts with: MONGODB, MAPBOX, STRIPE, SENDGRID, and MAILTRAP. Please ensure to have at least basic knowledge of how these services work.\n* In your .env file, set environment variables for the following:\n  ```\n  DATABASE=your Mongodb database URL\n  DATABASE_PASSWORD=your MongoDB password\n\n  SECRET=your JSON web token secret\n  JWT_EXPIRES_IN=90d\n  JWT_COOKIE_EXPIRES_IN=90\n\n  EMAIL_USERNAME=your mailtrap username\n  EMAIL_PASSWORD=your mailtrap password\n  EMAIL_HOST=smtp.mailtrap.io\n  EMAIL_PORT=2525\n  EMAIL_FROM=your real-life email address\n\n  SENDGRID_USERNAME=apikey\n  SENDGRID_PASSWORD=your sendgrid password\n\n  STRIPE_SECRET_KEY=your stripe secret key\n  STRIPE_WEBHOOK_SECRET=your stripe webhook secret\n  ```\n* Start the server.\n* Your app should be running just fine.\n\n\n## Installation\nYou can fork the app or you can git-clone the app into your local machine. Once done, please install all the\ndependencies and Set your env variables\n```\ngit clone https://github.com/NikhilMandaliya/Organive.git\nnpm i\n```\n\nHere are parcel scripts for dev and build\n```\n$ npm run watch:js\n$ npm run build:js\n```\n\nYou can run for development (nodemon)\n```\n$ npm run dev\n```\nYou can run in production mode\n```\n$ npm run start:prod (for production)\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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikhilmandaliya%2Fnatours","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikhilmandaliya%2Fnatours","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikhilmandaliya%2Fnatours/lists"}