Level 1 Team Project

1. House Real Estate Simulator

This guide is tailored for students who want to build an House Real Estate like application using React and Vite frameworks, based on the files and designs you've shared.

2. Initialize the Project

1. Create a new React + Vite project:

2. Install dependencies (if you use additional ones like React Router or icons):

Step 1: Set Up Project Structure

  1. Structure your folders as follows:

Step 2: Create a new component

  • Created a new file: src/components/HouseCard.jsx

  • Moved the JSX code from your original App.jsx into this new HouseCard component.

  • Passed the necessary data as three props only:

    • index: the current house number.

    • total: total number of houses.

    • houseData: all house details (price, location, etc.) as an object.

Create data foler at root directory and add houseForSale.js data

Step 3: Dynamically generate list items

  • Inside HouseCard, we use .map() to dynamically iterate over an array of objects containing label and value pairs (e.g., Price, Location, etc.).

  • No more hard-coded <li> elements!

Step 4: Update App.jsx

  • Import HouseCard into App.jsx.

  • Replace the map() function's JSX with the new <HouseCard /> component.

  • Pass props neatly.

Step 5: Maintain Visual Style

  • Your CSS (style.css) remains the same. So, the visual output does not change.

  • Design looks exactly like your provided UI screenshot!

Output:

Optional (Next Level Enhancements)

If you want to go further:

  1. PropTypes → Add type checking for props.

  2. Add animations → Hover effects or transitions.

  3. Responsive layout → Make it mobile-friendly.

  4. Fetch data dynamically → From an API or external JSON file.

Challenge: Fetch data dynamically → From an API or external JSON file.

We are now moving toward a real external property API integration. Let’s go step by step. We will show you exactly how to use RapidAPI for real estate data fetching.

Step 1: Sign Up and Get API Key on RapidAPI

  1. Create an account (free tier is fine). You need a credit card for creating API endpoint.

  2. Search for:

    • Zillow API (great for U.S. properties)

    • Realtor API (good for listings, agents, property photos)

  3. Subscribe to the API.

  4. Copy your X-RapidAPI-Key and X-RapidAPI-Host (you’ll need both in your fetch headers).

Step 2: Example Code Integration (React + RapidAPI)

Let’s assume you pick Zillow API (easy & fast). For secure management of your API key, we need a separate file named .env at the root directory. Replace 'YOUR_API_KEY_HERE' with your actual RapidAPI key.

Update your useEffect() in App.jsx like this:

Step 3: Adjust Data Mapping

Most APIs will return data in a slightly different shape than your local JSON. So you might need to map API fields to your UI.

For example, in your <HouseCard /> props, update like this:

Update your HouseCardFetch.jsx like this:

Step 4: Test

  • Start your app: npm run dev (or yarn).

  • Open your browser console to see the fetched data.

  • Map it cleanly to your UI 🎉

Output:

We would like to help you add dynamic search functionality next? 🚀 This will let your users enter a city name and price range and see haunted houses in real-time!

Our app is now leveled up with dynamic search inputs for:

  • 🏙️ City name

  • 💰 Minimum price

  • 💰 Maximum price

Update your AppFetchFilter.jsx like this:

Output:

What I improved:

  • Smooth Debounce ➔ Delayed API calls while typing, for better performance.

  • Styled Inputs & Buttons ➔ Rounded corners, better spacing, colors that match your theme.

  • Loading State ➔ User sees "Loading houses..." during fetch.

  • Error Handling ➔ Friendly error message if API call fails.

  • Sticky Beautiful Search Bar ➔ Stays visible and styled even when scrolling.

🔥 Bonus — Helpful APIs on RapidAPI

API Name
Link
Notes

Realtor API

RapidAPI Link

Popular, extensive U.S. real estate data.

Zillow API

RapidAPI Link

Well-known brand, U.S. focus.

Domain API (Australia)

RapidAPI Link

If you want Australian properties.

Last updated