Skip to content

Mostakim69/TourNest-BD

Repository files navigation

🌍 Tournest BD

Welcome to Tournest BD — a modern travel and tourism management platform where tourists can explore destinations, book packages, connect with guides, and share travel stories.
It’s built with React, Firebase, Express, and MongoDB ensuring a seamless and secure experience.


🚀 Features

  • 🔐 Authentication System – Sign up, sign in, social login (Google).
  • 🧑‍💼 Role-based Dashboard – Separate panels for Admin, Tourist, and Tour Guide.
  • 📦 Tour Packages – Browse and book packages with detailed info.
  • 👩‍🏫 Tour Guides – Join as a guide or hire guides for trips.
  • 📖 Travel Stories – Share and manage real travel experiences.
  • 💳 Payments – Secure booking and payment system.
  • 📊 Admin Controls – Manage users, candidates, payments, and bookings.
  • 📱 Responsive UI – Mobile, tablet, and desktop friendly.
  • Modern Animations – Smooth transitions and engaging visuals.

🛠️ Tech Stack

Frontend:

  • React (Vite)
  • Tailwind CSS
  • Framer Motion
  • React Router DOM

Backend & Auth:

  • Firebase Authentication
  • Express.js
  • MongoDB
  • Axios (secure requests)

Others:

  • ESLint + Prettier
  • Vercel / Firebase Hosting

⚙️ Installation & Setup

Clone the repo and install dependencies:

git clone https://github.com/mostakim69/tournest-bd.git
cd tournest-bd
npm install



mostakim69-tournest-bd/
├── README.md
├── eslint.config.js
├── firebase.json
├── index.html
├── package.json
├── structure.md
├── vite.config.js
├── vite.logger.plugin.js
├── .firebaserc
├── public/
│   └── CNAME
├── src/
│   ├── App.jsx
│   ├── index.css
│   ├── loggerClient.js
│   ├── main.jsx
│   ├── animation/
│   │   ├── auth-lottie.json
│   │   ├── index.js
│   │   ├── LottieAnimation.jsx
│   │   └── motion.js
│   ├── assets/
│   │   ├── assets.js
│   │   └── images/
│   │       └── index.js
│   ├── console/
│   │   ├── error.json
│   │   └── log.json
│   ├── contexts/
│   │   └── AuthContext/
│   │       ├── AuthContext.jsx
│   │       └── AuthProvider.jsx
│   ├── hooks/
│   │   ├── useAuth.jsx
│   │   ├── useAxiosSecure.jsx
│   │   ├── useFetchData.js
│   │   ├── useHelmet.jsx
│   │   ├── usePostData.jsx
│   │   ├── useSecureQuery.jsx
│   │   ├── useSecureUpdate.js
│   │   └── useUserRole.jsx
│   ├── modules/
│   │   ├── Auth/
│   │   │   ├── AuthLayout.jsx
│   │   │   ├── AuthRoute.jsx
│   │   │   ├── index.js
│   │   │   ├── components/
│   │   │   │   ├── SigninForm.jsx
│   │   │   │   ├── Signout.jsx
│   │   │   │   ├── SignUpForm.jsx
│   │   │   │   └── SocialLogin.jsx
│   │   │   └── pages/
│   │   │       ├── ForgotPass.jsx
│   │   │       ├── Signin.jsx
│   │   │       └── SignUp.jsx
│   │   ├── Dashbaord/
│   │   │   ├── DashboardLayout.jsx
│   │   │   ├── dashbourdRoutes.jsx
│   │   │   ├── AddStories/
│   │   │   │   └── AddStories.jsx
│   │   │   ├── Admin/
│   │   │   │   ├── AddPackage/
│   │   │   │   │   └── AddPackage.jsx
│   │   │   │   ├── Bookings/
│   │   │   │   │   ├── AllBookings.jsx
│   │   │   │   │   └── BookingDetails.jsx
│   │   │   │   ├── ManageCandidate/
│   │   │   │   │   ├── CandidateCard.jsx
│   │   │   │   │   └── ManageCandidate.jsx
│   │   │   │   ├── ManageUsers/
│   │   │   │   │   ├── ManageUsers.jsx
│   │   │   │   │   └── UsersRow.jsx
│   │   │   │   └── Payments/
│   │   │   │       ├── AllPayments.jsx
│   │   │   │       └── PaymentCard.jsx
│   │   │   ├── ManageProfile/
│   │   │   │   └── ManageProfile.jsx
│   │   │   ├── ManageStories/
│   │   │   │   ├── ManageStories.jsx
│   │   │   │   └── components/
│   │   │   │       ├── EditStoryModal.jsx
│   │   │   │       └── StoryCard.jsx
│   │   │   ├── Overview/
│   │   │   │   └── Overview.jsx
│   │   │   ├── TourGuides/
│   │   │   │   ├── TourGuides.jsx
│   │   │   │   ├── AssignedTour/
│   │   │   │   │   ├── AssignedTour.jsx
│   │   │   │   │   └── AssignedTourCard.jsx
│   │   │   │   └── GuideProfile/
│   │   │   │       └── GuideProfile.jsx
│   │   │   └── Tourist/
│   │   │       ├── Bookings/
│   │   │       │   ├── BookingCard.jsx
│   │   │       │   └── MyBookings.jsx
│   │   │       ├── JoinTourGuide/
│   │   │       │   └── JoinTourGuide.jsx
│   │   │       └── PaymentBooking/
│   │   │           ├── PaymentBooking.jsx
│   │   │           └── PaymentForm.jsx
│   │   ├── landing/
│   │   │   ├── index.js
│   │   │   └── home/
│   │   │       ├── Home.jsx
│   │   │       ├── TourismAndGuides.jsx
│   │   │       ├── Bannnerr/
│   │   │       │   └── Banner.jsx
│   │   │       ├── CallToActionFull/
│   │   │       │   └── CallToActionFull.jsx
│   │   │       ├── HowItWorks/
│   │   │       │   └── HowItWorks.jsx
│   │   │       ├── LiveStats/
│   │   │       │   └── LiveStats.jsx
│   │   │       ├── NewsletterSignup/
│   │   │       │   └── NewsletterSignup.jsx
│   │   │       ├── Overview/
│   │   │       │   ├── Overview.jsx
│   │   │       │   └── Stories/
│   │   │       │       ├── Stories.jsx
│   │   │       │       ├── StoryCard.jsx
│   │   │       │       └── StoryCard.jsx~
│   │   │       ├── RandomGuides/
│   │   │       │   └── RandomGuides.jsx
│   │   │       ├── ReactTab/
│   │   │       │   └── ReactTab.jsx
│   │   │       ├── Testimonials/
│   │   │       │   └── Testimonials.jsx
│   │   │       ├── TrendingDestinations/
│   │   │       │   └── TrendingDestinations.jsx
│   │   │       └── WhyChooseUs/
│   │   │           └── WhyChooseUs.jsx
│   │   ├── Packages/
│   │   │   ├── PackageDetails/
│   │   │   │   └── PackageDetails.jsx
│   │   │   └── Packages/
│   │   │       ├── PackageCard.jsx
│   │   │       └── Packages.jsx
│   │   └── shared/
│   │       ├── Layout/
│   │       │   ├── CommonFooter.jsx
│   │       │   ├── index.js
│   │       │   ├── Navbar.jsx
│   │       │   ├── NavbarDrawer.jsx
│   │       │   ├── navbarLinksConstant.jsx
│   │       │   ├── RootLayout.jsx
│   │       │   ├── SidebarLink.jsx
│   │       │   ├── sidebarLinks.js
│   │       │   └── Spinner.jsx
│   │       └── ui/
│   │           ├── Avatar.jsx
│   │           ├── Brand.jsx
│   │           ├── Button.jsx
│   │           ├── DropDown.jsx
│   │           ├── index.js
│   │           ├── Input.jsx
│   │           └── swalToast.js
│   ├── pages/
│   │   ├── About/
│   │   │   └── About.jsx
│   │   ├── Community/
│   │   │   └── CommunityPage.jsx
│   │   ├── faq/
│   │   │   ├── faq.constant.js
│   │   │   └── FAQ.jsx
│   │   └── PrivacySection/
│   │       └── PrivacySection.jsx
│   ├── router/
│   │   ├── ErrorPage.jsx
│   │   ├── ProtectedRoute.jsx
│   │   └── router.jsx
│   └── utils/
│       ├── axiosInstance.js
│       ├── customAlert.js
│       ├── deleteData.js
│       ├── ErrorMessage.jsx
│       ├── fetchData.js
│       ├── PageIntro.jsx
│       ├── postData.js
│       ├── TypeWriterEffect.jsx
│       └── updateData.js
└── .firebase/
    └── hosting.ZGlzdA.cache



## 🧭 Routing Structure (with Layouts)

### 🔐 Auth Layout

- `/login``Login.jsx`
- `/register``Register.jsx`
- `/forgot-password``ForgotPassword.jsx`

### 🏠 Main Layout (Landing Pages)

- `/``Home.jsx`
- `/about``About.jsx`
- `/contact``Contact.jsx`
- `/faq``Faq.jsx`
- `/privacy-policy``PrivacyPolicy.jsx`
- `/terms-and-conditions``TermsCondintion.jsx`


### 📚 Blog Feature (via `BlogsLayout.jsx`)

- `/blogs``Blogs.jsx`
- `/blogs/:id``BlogDetails.jsx`
- `/create-blog``CreateBlog.jsx`


### 👤 Profile

- `/my-profile``MyProfile.jsx`
- `/update-profile``UpdateProfile.jsx`

---

## 🔑 Features

### ✅ Authentication

- Firebase Auth integration
- Login, Register, Forgot Password
- Auth-protected routes


### 📝 Blog System

- View all blogs
- Blog details with comments, read time, tags
- Create and share new blogs


---

## 🛠️ Tech Stack

- **Frontend**: React.js, Tailwind CSS
- **Routing**: React Router 
- **Forms**: React Hook Form, React Day Picker
- **State Management**: React Context API (AuthProvider)
- **Animations**: Lottie
- **Toast Notifications**: React Hot Toast
- **Deployment**: GitHub Pages / Vercel / Netlify (configure as needed)
- **Build Tool**: Vite

---

## 📦 Installation

```bash
bun install  # or npm install
bun run dev  # or npm run dev

📌 TODOs


👏 Credits

  • Design inspired by classic cooking & recipe books
  • Icons via Lucide and Heroicons
  • Lottie animations from LottieFiles

📄 License

This project is licensed under the MIT License.


Made with ❤️ for food enthusiasts and aspiring chefs.

"Food is symbolic of love when words are inadequate." — Alan D. Wolfelt

----- preivous version ------


🚀 Features

🔐 Authentication & Security

  • Email/Password Login: Secure user authentication via Firebase.
  • Google Sign-In: Quick access using Google accounts.
  • Protected Routes: Restricts access to sensitive pages like profile and recipe details.
  • Password Reset: Users can reset passwords through email verification.

👤 User Profile

  • Profile Page: View and edit user information, including display name and photo.
  • Update Profile: Modify personal details securely.

📄 Additional Pages

  • About: Learn more about FlavorBook.
  • Contact: Get in touch with the team.
  • FAQ: Frequently Asked Questions.
  • Privacy Policy: Understand how user data is handled.
  • Terms & Conditions: Legal information regarding the use of FlavorBook.

🎨 UI/UX Enhancements

  • Responsive Design: Optimized for various devices.
  • Tailwind CSS & DaisyUI: Utilized for styling and component design.
  • Lottie Animations: Engaging animations for better user experience.
  • Swiper: Interactive sliders for showcasing content.

A Little More About Me...

Hello i'm Md Mostakim Hosen.

I'm a passionate Frontend Developer with a strong focus on creating clean, responsive, and user-friendly web interfaces. I enjoy building modern web applications using technologies like HTML, CSS, JavaScript, React.js, and Tailwind CSS. I believe in writing readable code, maintaining UI consistency, and ensuring a smooth user experience across all devices. I'm always eager to learn new tools and improve my skills to deliver better results.

const mostakim = {
  pronouns: "he" | "him",
  code: [Javascript, Typescript, HTML, CSS, Python, Java],
  tools: [React, Node, Storybook, Styled-Components],
  architecture: ["microservices", "event-driven", "design system pattern"],
  techCommunities: {
                        coorganizer: "AfroPython",
                        speaker: "Latinity",
                        mentor: "EducaTRANSforma"
                      },
 challenge: "I am doing the #100DaysOfCode challenge focused on react and typescript"
}

Banner

🌐 Socials:

email Facebook Discord Instagram LinkedIn Pinterest TikTok X YouTube

💻 Tech Stack:

HTML5 DaisyUI TailwindCSS JavaScript MongoDB React C# Java Python PHP Firebase Netlify Vercel Express.js JWT NPM NodeJS Nodemon React Query React Router React Native React Hook Form Vite Firebase MySQL Adobe Photoshop Canva Figma

📊 GitHub Stats:




About

The Tourist Guide is an online platform offering detailed information on Bangladesh’s top destinations. From famous landmarks to hidden gems, it helps travelers plan effectively with insights on attractions, culture, cuisine, and activities — making every trip memorable.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages