https://github.com/arjsabbir88/tourtide
"TourTide" is a full-stack MERN web application that allows users to explore, book, and manage tour packages. This booking management system includes user authentication, real-time tour data handling, booking history, and user-specific tour management functionality.
https://github.com/arjsabbir88/tourtide
axios cors daisyui dotenv express firebase-auth framer-motion jwt-authentication mongodb nodejs react react-awesome-reveal react-toastify reacthookform reactrouter sweetalert2 tailwindcss
Last synced: 2 months ago
JSON representation
"TourTide" is a full-stack MERN web application that allows users to explore, book, and manage tour packages. This booking management system includes user authentication, real-time tour data handling, booking history, and user-specific tour management functionality.
- Host: GitHub
- URL: https://github.com/arjsabbir88/tourtide
- Owner: arjsabbir88
- Created: 2025-06-24T23:56:09.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-08-10T13:44:26.000Z (11 months ago)
- Last Synced: 2025-09-13T16:09:31.443Z (9 months ago)
- Topics: axios, cors, daisyui, dotenv, express, firebase-auth, framer-motion, jwt-authentication, mongodb, nodejs, react, react-awesome-reveal, react-toastify, reacthookform, reactrouter, sweetalert2, tailwindcss
- Language: JavaScript
- Homepage: https://tourtide-app.web.app/
- Size: 236 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🌍 TourTide - Tour Package Booking Platform
Live Site 👉 [https://tour-tide-server.vercel.app](https://tour-tide-server.vercel.app)
## 📌 Project Overview
**TourTide** is a full-stack MERN web application that allows users to explore, book, and manage tour packages. This booking management system includes user authentication, real-time tour data handling, booking history, and user-specific tour management functionality.
The project focuses on usability, responsiveness, and secure implementation of Firebase Auth & JWT to provide a seamless booking experience.
---
## 🚀 Features
### 🔓 Public Access
- Home Page with Hero Banner & Featured Packages
- All Packages listing
- Package Details (requires login)
- About Us Page
### 🔐 Authentication
- Login with Email/Password
- Login with Google
- Registration with validation (Name, Email, Password, Photo URL)
- JWT token issued after login & used for protected API routes
- Secure routes for booking & package management
### 🧑💻 Logged-in User Features
- Add New Tour Package
- Manage My Packages (Update/Delete)
- Book any Package
- View My Bookings & confirm status
- View guide info on packages
### 💼 Admin/Guide Features
- View only own-added packages
- Update / Delete packages with confirmation
- Booking count updates automatically using `$inc`
---
## 🧭 Routes & Pages
- `/` → Home (Banner + Featured + Extras)
- `/all-packages` → All Packages with search
- `/add-package` → Private Route (Add Tour)
- `/manage-packages` → Private Route (Edit/Delete)
- `/my-bookings` → Private Route (See own bookings)
- `/package/:id` → Private Route (Package details + Booking)
- `/about` → About Us
- `/login` → Login
- `/register` → Register
- `*` → 404 Page with animation
---
## 🔐 Authentication & Authorization
- Firebase Authentication
- Google Sign-In
- JWT token stored in `localStorage` for session
- Backend protected routes using custom JWT middleware
- Firebase domain whitelisted for deployment
---
## 🛠️ Tech Stack
### Frontend:
- React
- React Router DOM
- Tailwind CSS
- DaisyUI
- Axios
- React Hook Form
- Framer Motion (optional)
- Firebase Auth
### Backend:
- Express.js
- Node.js
- MongoDB (with Mongoose)
- JWT for secure API calls
- CORS configured
- dotenv for secure environment variables
---
## 📂 Database Collections
### `tourPackages`
```json
{
"tour_name": "Dhaka to Cox’s Bazar Tour",
"image": "url",
"duration": "3 Days 2 Nights",
"departure_location": "Dhaka",
"destination": "Cox's Bazar",
"price": 12000,
"departure_date": "2025-07-15",
"package_details": "Includes transport, hotel and guide",
"guide_name": "John Doe",
"guide_email": "john@example.com",
"guide_photo": "url",
"guide_contact_no": "017xxxxxx",
"bookingCount": 3,
"created_at": "2025-06-24T12:00:00Z"
}
```