Skip to Content
Housr AppFeaturesExplore Feature

Explore Feature

House discovery, search, filters, map view, and property detail.

Location

  • Feature module: src/features/explore/
  • Routes: src/app/(tabs)/explore/, src/app/house/, src/app/explore-search/
  • Contexts: explore-filters-context.tsx, device-city-context.tsx, explore-navigation-context.tsx

API Functions

FileFunctionAPIEndpoint
api/list-houses.tslistHouses(params)v2GET properties/v1/houses
api/get-house.tsgetHouse(houseId)v1POST getHouse.php
api/get-house.tsrecordHouseView(houseId)v1POST houseViewed.php
api/get-house.tslikeHouse(houseId)v1POST like.php
api/get-house.tsunlikeHouse(houseId)v1POST removeLikedHouse.php
api/get-house.tsrequestInfo(params)v1POST requestViewing.php
api/get-house.tssubmitPropertyOperatorCallLead(houseId)v1POST propertyOperatorCallLead.php
api/like-house.tsv2Like via v2 API
api/search.tsSearch functionality
api/fetch-entrata-tour-times.tsEntrata integration for US tour scheduling

Hooks

HookFileDescription
useListHouseshooks/use-list-houses.tsPaginated house listing with infinite scroll, deduplication, optimistic removal
useHousesQueryhooks/use-houses-query.tsReact Query useInfiniteQuery wrapping listHouses
useHousehooks/use-house.tsSingle house fetch with useState + auto view recording
useHouseQueryhooks/use-house-query.tsReact Query version of single house fetch
useLikeMutationhooks/use-like-mutation.tsLike/unlike mutation
usePropertySelectionhooks/use-property-selection.tsProperty selection state

Filters

ExploreFiltersProvider (context/explore-filters-context.tsx) manages:

  • Price range: priceMin, priceMax
  • Bedrooms/Bathrooms: bedrooms, bathrooms
  • UoB Approved: uobApprovedOnly (Birmingham only)
  • Academic year: academicYear (always set in US mode)
  • Amenities: pets, balcony, studyArea, gym, pool, hotTub, sauna

Filters and sort preference are persisted to AsyncStorage (keys: explore_filters, explore_sort).

Sort options: Recommended, Popular, Most liked, Newest added, Highest price, Lowest price

The context converts UI filter values to API filter params via apiFilters (memoized) and apiSort.

Query Keys

Defined in constants/query-keys.ts:

queryKeys.houses.all // ['houses'] queryKeys.houses.list() // ['houses', 'list', params] queryKeys.houses.detail() // ['houses', 'detail', id]

List Houses API Parameters

The listHouses function builds query params for the v2 API:

  • Pagination: limit, page
  • Filters: filter[boundary], filter[price_min], filter[price_max], filter[bedrooms], filter[bathrooms], filter[city], filter[is_liked], filter[is_group_liked], filter[property_operator], filter[agent_id], filter[uob_approved], filter[academic_year], filter[crm_block_id]
  • Sort: sort param
  • Includes: include=videoTour (or viewingRequest,videoTour for liked houses)
  • Search: query, slug, type

Components

ComponentFileDescription
HouseCardcomponents/house-card.tsxMain property card with image, price, details
SmallHouseCardcomponents/small-house-card.tsxCompact card variant
HouseCardBadgecomponents/house-card-badge.tsxBadge overlay (new, featured, etc.)
HouseCardBannercomponents/house-card-banner.tsxBanner overlay
HouseCardSkeletoncomponents/house-card-skeleton.tsxLoading placeholder
PriceRangeFiltercomponents/price-range-filter.tsxPrice range slider
RoomsSteppercomponents/rooms-stepper.tsxBedroom/bathroom counter
SortByModalcomponents/sort-by-modal.tsxSort option picker
WelcomeCityModalcomponents/welcome-city-modal.tsxFirst-launch city picker
SearchItemcomponents/search-item.tsxSearch result item
TourTimePickercomponents/tour-time-picker/Tour scheduling (US, Entrata integration)

House overview components (components/house-overview/): amenities, availability, book viewing modal, image gallery, map, nearby properties, viewing slot card, request info modal.

Widgets

widgets/featured-house-cluster.tsx — Featured house cluster for server-driven UI screens.

Routes

RouteDescription
(tabs)/explore/index.tsxMain explore screen
house/[id].tsxHouse detail page
house/filters.tsxFilter screen
house/overview/video-tour.tsxVideo tour
house/overview/building-listings.tsxBuilding listings
house/overview/epc.tsxEnergy performance certificate
house/overview/floorplan.tsxFloor plan viewer
house/overview/map.tsxProperty map
Last updated on