Skip to content

mamta-vyas/Travel-Wishlist-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌍 Travel Wishlist App

A modern, full-stack Travel Wishlist Web App built with React.js, Node.js, Express.js, MongoDB, Firebase Authentication, and Redux Toolkit. It offers a seamless experience where users can sign up, explore cities, see weather, nearby places, maps, and maintain their own wishlist β€” all in one single web app.

πŸ—‚ Project Structure

Travel-Wishlist-App/ β”œβ”€β”€ README.md β”œβ”€β”€ client β”‚ β”œβ”€β”€ firebase.json β”‚ β”œβ”€β”€ package-lock.json β”‚ β”œβ”€β”€ package.json β”‚ β”œβ”€β”€ public β”‚ β”‚ β”œβ”€β”€ 404.html β”‚ β”‚ β”œβ”€β”€ favicon.ico β”‚ β”‚ β”œβ”€β”€ index.html β”‚ β”‚ β”œβ”€β”€ logo192.png β”‚ β”‚ β”œβ”€β”€ logo512.png β”‚ β”‚ β”œβ”€β”€ manifest.json β”‚ β”‚ └── robots.txt β”‚ β”œβ”€β”€ src β”‚ β”‚ β”œβ”€β”€ App.css β”‚ β”‚ β”œβ”€β”€ App.js β”‚ β”‚ β”œβ”€β”€ App.test.js β”‚ β”‚ β”œβ”€β”€ app β”‚ β”‚ β”‚ └── store.js β”‚ β”‚ β”œβ”€β”€ components β”‚ β”‚ β”‚ β”œβ”€β”€ AuthInitializer.js β”‚ β”‚ β”‚ β”œβ”€β”€ Dashboard.js β”‚ β”‚ β”‚ β”œβ”€β”€ DestinationDetails.js β”‚ β”‚ β”‚ β”œβ”€β”€ Header.js β”‚ β”‚ β”‚ β”œβ”€β”€ LoginPage.js β”‚ β”‚ β”‚ β”œβ”€β”€ SearchBar.js β”‚ β”‚ β”‚ β”œβ”€β”€ SignUpPage.js β”‚ β”‚ β”‚ └── UserStats.js β”‚ β”‚ β”œβ”€β”€ config β”‚ β”‚ β”‚ └── firebaseConfig.js β”‚ β”‚ β”œβ”€β”€ features β”‚ β”‚ β”‚ β”œβ”€β”€ userSlice.js β”‚ β”‚ β”‚ └── wishlistSlice.js β”‚ β”‚ β”œβ”€β”€ images β”‚ β”‚ β”‚ β”œβ”€β”€ Background.webp β”‚ β”‚ β”‚ └── logo.jpeg β”‚ β”‚ β”œβ”€β”€ index.css β”‚ β”‚ β”œβ”€β”€ index.js β”‚ β”‚ β”œβ”€β”€ logo.svg β”‚ β”‚ β”œβ”€β”€ pages β”‚ β”‚ β”‚ β”œβ”€β”€ About.js β”‚ β”‚ β”‚ β”œβ”€β”€ Contact.js β”‚ β”‚ β”‚ β”œβ”€β”€ Home.js β”‚ β”‚ β”‚ β”œβ”€β”€ LandingPage.js β”‚ β”‚ β”‚ β”œβ”€β”€ UserInfo.js β”‚ β”‚ β”‚ └── Wishlist.js β”‚ β”‚ β”œβ”€β”€ reportWebVitals.js β”‚ β”‚ └── setupTests.js β”‚ └── tailwind.config.js └── server β”œβ”€β”€ config β”‚ └── firebaseAdmin.js β”œβ”€β”€ middleware β”‚ └── firebaseAuth.js β”œβ”€β”€ models β”‚ └── User.js β”œβ”€β”€ package-lock.json β”œβ”€β”€ package.json β”œβ”€β”€ routes β”‚ β”œβ”€β”€ authRoutes.js β”‚ └── wishlist.js β”œβ”€β”€ server.js └── serviceAccountKey.json

πŸ”₯ Key Features

πŸ” Firebase Authentication (Email/Password + Google provider)

πŸ—ΊοΈ Explore city details: Map, Photos, Weather, Nearby Places in one app

πŸ›’ Wishlist functionality with Local Storage persistence

🧠 User Session with Redux Toolkit state management

πŸ“ˆ UserStats: Display how many users registered and wishlisted

πŸ™οΈ Temporary Cities Search using Session Storage (resets on refresh or relogin)

⚑ Optimized Map rendering with timed delay for large city data

🌀️ Real-time Weather data fetching

🏞️ Nearby Places using FourSquare API (proper latitude/longitude fixed)

🌐 Google Gemini API integration to search Country Code and Region Code of cities

🎨 Intuitive and Attractive UI with Tailwind CSS

πŸ–ΌοΈ One-place dashboard: View everything about a city without switching apps

πŸ›  Tech Stack

Frontend (React.js - Client) βš›οΈ React.js

🎯 Redux Toolkit (@reduxjs/toolkit) and react-redux for state management

🧩 Tailwind CSS for responsive and modern UI

πŸ”₯ Firebase Authentication for secure sign-in/sign-up

πŸ“¦ LocalStorage and SessionStorage for user and temporary data persistence

πŸ” Google Gemini API for finding city, country code, and region/state code

🌑️ OpenWeatherMap API for fetching real-time weather data

πŸ–ΌοΈ Unsplash API for fetching beautiful images of places and cities

🌍 Foursquare Places API for fetching nearby places

πŸ—ΊοΈ Leaflet.js with MapTiler API and MapTiler Key for interactive maps

πŸ“ˆ UserStats component to show live registered users

πŸ—ΊοΈ Map Integration with optimized rendering using time delays for smooth user experience

Backend (Node.js/Express - Server) πŸš€ Express.js server with REST API architecture

πŸ” Firebase Admin SDK to verify Firebase ID tokens on backend

πŸ›’οΈ MongoDB with Mongoose for user data storage

πŸ“₯ How to Run the Project

  1. Clone the Repository git clone https://github.com/mamta-vyas/Travel-Wishlist-App.git cd Travel-Wishlist-App

  2. Setup Firebase (Client Side) Create a Firebase project at Firebase Console Enable Email/Password and Google authentication Copy the config keys to client/src/config/firebaseConfig.js:

const firebaseConfig = { apiKey: "YOUR_API_KEY", authDomain: "YOUR_PROJECT.firebaseapp.com", projectId: "YOUR_PROJECT_ID", storageBucket: "YOUR_PROJECT.appspot.com", messagingSenderId: "YOUR_SENDER_ID", appId: "YOUR_APP_ID", };

  1. Setup Firebase Admin (Server Side) Generate a Service Account Key from Firebase Console Save it as server/serviceAccountKey.json Import it in server/config/firebaseAdmin.js to initialize Firebase Admin SDK

  2. Setup Environment Variables Create a .env file in server/ with:

MONGO_URI=your_mongodb_uri PORT=5000

Make sure MongoDB is running locally or connected to Atlas.

  1. Install Client Dependencies and Run cd client npm install npm start

  2. Install Server Dependencies and Run cd server npm install npm run dev

βš™οΈ Improvements and Optimizations Done 🧹 Fixed Map Loading: Added a timeout delay to ensure smoother map rendering when many cities are loaded.

🌍 FourSquare Nearby Places Fixed: Now correctly fetches using accurate latitude and longitude values for cities.

πŸ“¦ Session Storage: Temporary cities search data stored in SessionStorage and reset upon page reload or new login.

πŸ›’ Wishlist Persistence: Added wishlist storage via LocalStorage so that user's favorite cities are remembered.

πŸ”Ž Google Gemini API Search: Added a feature to lookup Country Code and State Code if the user doesn't know them.

πŸ“Š User Stats Improvement: Track total registered users.

✨ Beautiful Dashboard: View Weather, Map, Photos, and Places of a city β€” no need to open multiple websites!

πŸ› οΈ Code Splitting: App structured into small manageable components for scalability and maintainability.

🎨 Polished UI: Fully responsive, visually appealing design with animations and clean forms.

βœ‰οΈ Contact πŸ“§ Email: [email protected] πŸ“Œ Issues/Suggestions: Feel free to open an Issue

❀️ Made with Passion using React | Redux Toolkit | Firebase | Node.js | Express.js | MongoDB | Tailwind CSS | Google Gemini API | FourSquare API

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published