This project is a comprehensive clone of the Expedia website, built using React and Vite. It aims to replicate the core features and user experience of the Expedia platform, providing users with a familiar interface for browsing and booking travel accommodations.
- Project Overview
- Project Structure
- Images
- Key Features
- Technologies Used
- Components
- Pages
- Setup and Installation
- Running the Project
- Mock Server
- Styling
- Responsive Design
- Contributing
- License
This Expedia clone aims to recreate the main functionalities of the Expedia website, focusing on the accommodation booking process. It includes features such as searching for stays, viewing property details, and a simplified booking flow.
The project follows a modular React application structure:
Expedia-Project/
├── Expedia/
│ ├── dist/
│ ├── node_modules/
│ ├── public/
│ ├── src/
│ │ ├── assets/
│ │ ├── Components/
│ │ │ ├── Footer.jsx
│ │ │ ├── ImgBanner.jsx
│ │ │ ├── ImgContainer.jsx
│ │ │ ├── Navbar.jsx
│ │ │ ├── Offer.jsx
│ │ │ ├── RecentSearch.jsx
│ │ │ ├── SearchBar.jsx
│ │ │ ├── StaysSearch.jsx
│ │ │ └── TrendingDestination.jsx
│ │ ├── pages/
│ │ │ ├── GetApp.jsx
│ │ │ ├── Home.jsx
│ │ │ ├── SignIn.jsx
│ │ │ └── StaysResult.jsx
│ │ ├── App.css
│ │ ├── App.jsx
│ │ ├── index.css
│ │ └── main.jsx
│ ├── .eslintrc.cjs
│ ├── .gitignore
│ ├── db.json
│ ├── index.html
│ ├── index.js
│ ├── package-lock.json
│ ├── package.json
│ ├── README.md
│ └── vite.config.js
└── README.md
- Home Page: Displays trending destinations, recent searches, and special offers.
- Search Functionality: Allows users to search for accommodations by location, dates, and number of travelers.
- Results Page: Shows a list of available properties based on search criteria.
- Property Details: Provides detailed information about selected properties.
- User Authentication: Includes sign-in and sign-up functionality.
- Responsive Design: Ensures a seamless experience across various device sizes.
- React: Frontend library for building user interfaces
- Vite: Next-generation frontend tooling for faster development
- React Router: For handling navigation within the application
- CSS: For styling components
- Font Awesome: Icon library for enhanced UI elements
- JSON Server: To create a mock API for development purposes
- Swiper: For implementing image sliders and carousels
- React Responsive: For implementing responsive design features
- Navbar: Navigation component present across all pages
- Footer: Footer component with site links and information
- SearchBar: Main search component for finding accommodations
- ImgBanner: Component for displaying promotional banners
- Offer: Component for showing special offers to users
- RecentSearch: Displays user's recent search history
- TrendingDestination: Showcases popular travel destinations
- ImgContainer: Flexible component for displaying image grids
- Home: Landing page with search functionality and trending destinations
- GetApp: Page promoting the Expedia mobile app
- SignIn: User authentication page
- StaysResult: Displays search results for accommodations
- Clone the repository: git clone https://github.com/your-username/expedia-clone.git
- Navigate to the project directory: cd expedia-clone/Expedia
- Install dependencies: npm install
- Start the development server: npm run dev
- Open your browser and visit
http://localhost:3000(or the port specified in the console output).
This project uses JSON Server to simulate API responses:
- Install JSON Server globally: npm install -g json-server
- Start the mock server: json-server --watch db.json --port 3001
The mock server runs on http://localhost:3001, serving data from db.json.
The project uses CSS for styling, with separate CSS files for each component and page. The App.css file contains global styles, while component-specific styles are kept in their respective CSS files.
The application is built with a mobile-first approach, utilizing media queries and flexible layouts to ensure a consistent experience across devices. The react-responsive library is used to apply conditional rendering based on screen size.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available under the MIT License.









