π 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
-
Clone the Repository git clone https://github.com/mamta-vyas/Travel-Wishlist-App.git cd Travel-Wishlist-App
-
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", };
-
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
-
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.
-
Install Client Dependencies and Run cd client npm install npm start
-
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