Skip to Content
Housr AppFeaturesRoomie Feature

Roomie Feature

Roommate profile creation, discovery, matching, and Firebase-based chat.

Location

  • Feature module: src/features/roomie/
  • Routes: src/app/(tabs)/explore/roomie/

Overview

Roomie allows students to find potential roommates by:

  1. Creating a profile (about you, bio, profile pic, more info, house pics)
  2. Browsing other profiles in a carousel or list
  3. Sending/receiving message requests
  4. Chatting via Firebase Realtime Database

Hooks

HookFileDescription
useRoomieProfileshooks/use-roomie-profiles.tsFetches roomie profiles from apiV1 with manual pagination
useCurrentUserProfilehooks/use-current-user-profile.tsCurrent user’s roomie profile
useRoomieProfilehooks/use-roomie-profile.tsSingle profile fetch
useRoomieProfileCompletehooks/use-roomie-profile-complete.tsCheck if profile is complete
useChatshooks/use-chats.tsFirebase chat integration
useStillLookingResponsehooks/use-still-looking-response.ts”Still looking?” prompt state

useRoomieProfiles

Uses apiV1.get('roomie/getProfiles.php') with manual state management (not React Query). Supports load-more pagination by incrementing the limit parameter.

Types

  • types.tsRoomieProfile interface
  • types/chat-preview.ts — Chat list preview
  • types/chat-room.ts — Chat room data
  • types/message.ts — Chat message

Components

Profile Setup

ComponentDescription
RoomieLandingLanding page with intro and CTA
QuestionStepReusable step component for profile setup
BudgetWheelPickerBudget range selector
DetailCardsProfile detail display cards
MoreInfoProfileContentExtended profile information
CameraIconCamera/photo upload icon

Discovery

ComponentDescription
ExploreCarouselSwipeable profile cards
ExploreListGrid/list of profiles
ExploreItemIndividual profile card
ExploreHeaderExplore section header
SkippedModal”You skipped this person” modal
MessageRequestModalSend message request prompt
RemoveProfileModalRemove own profile
BlockModalBlock user modal

Chat

ComponentDescription
ChatChat room interface
ChatListList of chat rooms
ChatListContainerChat list wrapper
ChatInfoChat room info/details
ChatMenuChat options menu
AnimatedMessageAnimated message bubble
NoChatFoundEmpty chat state
BlurBackdropBlur overlay
EditProfileItemPreviewProfile field preview in chat

Icons

ComponentDescription
RoomieLogoIconRoomie branding icon

Routes

RouteDescription
explore/roomie/index.tsxRoomie landing
explore/roomie/explore.tsxBrowse profiles
explore/roomie/about-you.tsxProfile setup: about you
explore/roomie/bio.tsxProfile setup: bio
explore/roomie/profile-pic.tsxProfile setup: photo
explore/roomie/more-info.tsxProfile setup: additional info
explore/roomie/house-pics.tsxProfile setup: house photos
explore/roomie/chat.tsxChat list
explore/roomie/chat/[roomId].tsxIndividual chat room
explore/roomie/edit-profile.tsxEdit profile
explore/roomie/edit-profile-item.tsxEdit single field
explore/roomie/edit-profile-pic.tsxChange profile photo
explore/roomie/edit-house-pics.tsxChange house photos

Constants

  • constants.ts — Profile setup options and defaults
  • constants/block-reasons.ts — Block/report reason options

Utilities

  • utils.ts — General roomie utilities
  • utils/format-timestamp.ts — Chat timestamp formatting
Last updated on