Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/barakadanny/natours
Natours is a full-stack web application built with Node.js, Express.js, and MongoDB. It provides users with the ability to register, login, navigate tours, review tours, book tours, and make payments.
https://github.com/barakadanny/natours
expressjs mongodb mongoose node-js pug-template-engine tailwindcss
Last synced: 14 days ago
JSON representation
Natours is a full-stack web application built with Node.js, Express.js, and MongoDB. It provides users with the ability to register, login, navigate tours, review tours, book tours, and make payments.
- Host: GitHub
- URL: https://github.com/barakadanny/natours
- Owner: barakadanny
- Created: 2023-05-26T09:32:14.000Z (over 1 year ago)
- Default Branch: dev
- Last Pushed: 2023-07-11T21:52:36.000Z (over 1 year ago)
- Last Synced: 2024-11-07T17:11:55.944Z (2 months ago)
- Topics: expressjs, mongodb, mongoose, node-js, pug-template-engine, tailwindcss
- Language: Pug
- Homepage: https://documenter.getpostman.com/view/23491723/2s93sc5D5A#intro
- Size: 57.8 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Natours
An awesome README template to jumpstart your projects!
Api doc ยป
View Demo
ยท
Report Bug
ยท
Request Feature
Table of Contents
## About The Project
Natours is a full-stack web application built with Node.js, Express.js, and MongoDB. It provides users with the ability to register, login, navigate tours, review tours, book tours, and make payments. This documentation aims to guide you through the installation, configuration, and usage of the Natours application.
### Built With
List of technologies and dependecies used in the project.
* [Node.js](https://nodejs.org/en/)
* [Express.js](https://expressjs.com/)
* [MongoDB](https://www.mongodb.com/)
* [Mongoose](https://mongoosejs.com/)
* [Pug](https://pugjs.org/api/getting-started.html)
* [Stripe](https://stripe.com/)
* [Mailtrap](https://mailtrap.io/)
* [bcryptjs](https://www.npmjs.com/package/bcryptjs)
* [express-mongo-sanitize](https://www.npmjs.com/package/express-mongo-sanitize)
* [helmet](https://www.npmjs.com/package/helmet)
* [hpp](https://www.npmjs.com/package/hpp)
* [xss-clean](https://www.npmjs.com/package/xss-clean)
* [express-rate-limit](https://www.npmjs.com/package/express-rate-limit)
* [nodemailer](https://nodemailer.com/about/)
* [jsonwebtoken](https://www.npmjs.com/package/jsonwebtoken)
* [slugify](https://www.npmjs.com/package/slugify)## Getting Started
Before proceeding with the installation, ensure that your system meets the following requirements:
* Node.js v14 or higher
* npm
* MongoDB### Prerequisites
This is an example of how to list things you need to use the software and how to install them.
* npm
```sh
npm install npm@latest -g
```### Installation
1. Get a look on the [api documentation](###) to get a better understanding of the application.
2. Clone the repo
```sh
git clone https://github.com/barakadanny/Natours-Nodejs-Express.git
```
3. Install NPM packages
```sh
npm install
```
5. Create a `config.env` file in the root directory and add the following environment variables:
```sh
NODE_ENV=development
PORT=3000
DATABASE_PASSWORD= ***
DATABASE= ***JWT_SECRET= ***
JWT_EXPIRES_IN=90d
JWT_COOKIE_EXPIRES_IN=90EMAIL_USERNAME= ***
EMAIL_PASSWORD= ***
EMAIL_HOST=sandbox.smtp.mailtrap.io
EMAIL_PORT=25
```5. Start the server
for development:
```sh
npm run dev
```
or
for production:
```sh
npm run prod
```## Usage
Natours provides various functionalities/features to users through its backend API. Let's explore of them.
- Authentication
- Register
- Login
- Logout
- Forgot Password
- Reset Password
- Update Password
- Update User Data
- Delete User
- Tours
- Get All Tours
- Get Tour
- Create Tour
- Update Tour
- Delete Tour
- Get Tour Stats
- Get Monthly Plan
- Get Tours Within
- Get Distances
- Bookings
- Get All Bookings
- Get Booking
- Create Booking
- Update Booking
- Delete Booking
- Reviews
- Get All Reviews
- Get Review
- Create Review
- Update Review
- Delete Review_Note: The API documentation is available [here](https://documenter.getpostman.com/view/23491723/2s93sc5D5A#intro) for all the endpoints._
- [ ] Save tours to wishlist
- [ ] Offer discount coupons
- [ ] Add more payment methods
- [ ] Add more authentication methods (e.g. Google, Facebook, etc.)
- [ ] Add social media login options
- [ ] Add social media sharing optionsHave a feature in mind? [open issues](https://github.com/barakadanny/Natours-Nodejs-Express/issues).
## Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request## License
Distributed under the MIT License. See `LICENSE.txt` for more information.
## Contact
๐จโ๐ป **Baraka Danny**
- GitHub: [@barakadan](https://github.com/barakadanny)
- LinkedIn: [danny baraka](https://www.linkedin.com/in/danny-baraka-589156169/)1. #### What is the purpose of this project?
> This project is a part of my portfolio. It was created to showcase a full backend API built with Node.js, Express, MongoDB, and Mongoose.
2. #### Can I contribute to this project?
> Yes, you can. Just fork the repository, make your changes and create a pull request. Your pull request will be reviewed and merged if it adds value to the project.
3. #### Who can I talk to if I have questions?
> If you have any questions regarding this project, feel free to reach out to me at [email protected]_
4. #### I found a bug/issue, what do I do?
> Report it in the issues section and I will look into it.