A full-stack application for booking tours that combines a RESTful API and server-side rendering using Node.js, Express, and MongoDB.
Welcome to the Tour Booking App! This project provides both a RESTful API for programmatic access and server-side rendering using Pug for a seamless user experience. It is built using Express.js, Node.js, and MongoDB as the database. This application for users who want to book tours, leave reviews, and interact with the platform, as well as administrators and lead tour guides who need specialized dashboards for management.
💡Note: This project is currently a work in progress.
- Authentication & Authorization: Secure user authentication and authorization system.
- Exploring Tours (client): Users can browse and search for available tours.
- Booking Tours (client): Users can book tours they are interested in.
- Rating and Reviewing Tours: Clients can leave reviews and ratings for tours they've booked.
- Payment for Booked Tours: Integration with Stripe for secure payment processing.
- Admin Dashboard: A powerful admin dashboard for managing tours, bookings, reviews, and users.
- Lead-Tour-Guide Dashboard: Specialized dashboard for lead tour guides displaying their tours and relevant statistics.
- Node.js
- Express.js
- MongoDB (Database)
- Mongoose (ODM)
- Pug (for server-side rendering)
- JWT (JSON Web Tokens)
- Stripe (for payments)
- Jest (for unit and integration testing)
- Supertest (for testing HTTP endpoints)
Before you begin, ensure you have met the following requirements:
- Node.js installed.
- MongoDB installed and running.
- Git installed (if you plan to clone the repository).
-
Clone the repository:
git clone https://github.com/m7moudGadallah/Tour-Booking-App-using-express-mongoDB.git
-
Navigate to the project directory:
cd app
-
Install the project dependencies:
npm install
-
Rename
.env.env
to.env
and set the actual values for your environment variables in the .env file. -
Start the application in development mode:
npm run start:dev
The application should now be accessible at http://localhost:3000
.
-
To run the application in production mode, use:
npm run start:prod
We ensure the reliability of this application through unit and integration testing using Jest
and Supertest
.
-
Ensure that you have installed all project dependencies, including development dependencies:
npm install
-
Run the unit and integration tests:
npm test
We maintain a high level of code coverage to ensure that our application functions correctly and securely. You can view the test coverage report by running:
npm run test:coverage
The coverage report will be available in the coverage directory.
Designs and documentation for this project can be found in the docs directory.
This project is licensed under the MIT License - see the LICENSE file for details.