Skip to content

HouseFly - roommate matching mobile app (no longer live on app store or google play)

Notifications You must be signed in to change notification settings

MiloMargolis/housefly-mobile-app

Repository files navigation

HouseFly: Roommate Matchmaker Mobile App

HouseFly is a cross-platform mobile app (built with Expo/React Native) that helps students find rooms, roommates, and sublets based on lifestyle compatibility. Users can browse detailed profiles, view photos, and get matched quickly and securely.


Table of Contents


Overview

HouseFly is designed for students seeking compatible roommates or sublets. The app provides:

  • A smooth onboarding experience
  • Profile browsing for both "hunters" (listing a room) and "renters" (seeking a room)
  • Lifestyle and preference-based matching
  • Fast connection to top matches

Features

  • Onboarding: Guided onboarding to select user type (Hunter or Renter)
  • Profile Browsing: Swipe through detailed profiles with photos, lifestyle, and preferences
  • Matching: Get connected to your best matches within 12 hours
  • Contact: Directly reach out to the HouseFly team for personalized matching
  • Profile Switching: Switch between Hunter and Renter profiles
  • Cross-Platform: Runs on iOS, Android, and web (via Expo)

Onboarding Flow

  1. Welcome Screen:
    • Introduction to HouseFly and its mission
    • Button to get started
  2. User Type Selection:
    • Choose between:
      • "I am looking for a room or new roommates" (Renter)
      • "I am trying to rent or lease my current room" (Hunter)
    • User type is stored for personalized experience
  3. Profile Completion:
    • Users complete their profile (not shown in onboarding, but required for matching)

Data Models

Hunter

  • User Info: id, first_name, last_name, age, gender, major, user_type
  • General: groceries, sleep_schedule, guests, party, little_about_me
  • Cleanliness: cleanliness_level, dishes, home_cleaning_frequency
  • Drugs: drinking, smoking, weed, drugs
  • Home Attributes: location, move_in, move_out, price_bottom, price_top, neighborhood, other
  • About Me: personal_attribute1-4
  • Photos: headshot, profile1-5

Renter

  • User Info: id, first_name, last_name, age, gender, major, user_type
  • House General: groceries, sleep_schedule, guests, party, little_about_us
  • Cleanliness: cleanliness_level, dishes, home_cleaning_frequency
  • Drugs: drinking, smoking, weed, drugs
  • House Attributes: location, price, rooms, bathrooms, move_in, move_out, parking, furnished, pets, broker_fees, laundry
  • About Roommates: roommate_attribute1-4
  • Photos: headshot, profile1-5

API Integration

  • Backend: REST API (configured via environment variables)
  • Endpoints Used:
    • /users/:id — Basic user info
    • /hunter_general/:id, /renter_house_general/:id — General info
    • /hunter_cleanliness/:id, /renter_house_cleanliness/:id — Cleanliness
    • /hunter_drugs/:id, /renter_drugs/:id — Substance use
    • /hunter_home_attributes/:id, /renter_house_attributes/:id — Home/house details
    • /hunter_about_me/:id, /renter_about_me_attributes/:id — Personal/roommate attributes
    • /hunter_photos/:id, /renter_photos/:id — Profile photos
    • /hunters, /renters — List of all hunters/renters
  • Storage: User type and onboarding status are stored locally with AsyncStorage

Project Structure

housefly-v1/
  app/                # App entry, navigation, and screens
    (tabs)/           # Tabbed navigation: Explore, Match, Profile
    _layout.tsx       # Root layout and onboarding logic
  components/         # UI components (Hunter, Renter, Onboarding, etc.)
  constants/          # Color and style constants
  hooks/              # Custom React hooks
  services/           # API service logic
  src/
    config/           # Environment configuration
    database/         # Database connection
    utils/            # Utility functions (logging, etc.)
  types/              # TypeScript data models
  assets/             # Images, fonts, and static assets
  scripts/            # Utility scripts
  package.json        # Project dependencies and scripts
  app.json            # Expo app configuration

Setup & Development

Prerequisites

Install dependencies

npm install
# or
yarn install

Configure environment variables

# Copy the example environment file
cp .env.example .env

# Edit .env with your actual values
# REQUIRED: API_BASE_URL, API_PROD_URL, CONTACT_PHONE, RDS_ENDPOINT, DB_PASSWORD
# OPTIONAL: AWS_REGION, AWS_PROJECT_REGION, FIREBASE_API_KEY, FIREBASE_PROJECT_ID

⚠️ Security Note:

  • Never commit .env files to version control
  • All sensitive values are now environment-dependent
  • The app will fail to start in production if required variables are missing

Start the app

npx expo start
  • Open in Expo Go, iOS Simulator, or Android Emulator as prompted

Lint & Test

npm run lint
npm run test

Environment Configuration

The app uses a centralized configuration system located in src/config/environment.ts.

Required Environment Variables

Create a .env file in the root directory with the following variables:

# API Configuration
API_BASE_URL=https://your-api-url.com
API_PROD_URL=https://your-api-url.com/prod

# Contact Information
CONTACT_PHONE=your-phone-number

# Database Configuration
RDS_ENDPOINT=your-rds-endpoint
DB_PASSWORD=your-db-password

# AWS Configuration (if using Amplify)
AWS_REGION=us-east-1
AWS_PROJECT_REGION=us-east-1

# Firebase Configuration (if using Firebase)
FIREBASE_API_KEY=your-firebase-api-key
FIREBASE_PROJECT_ID=your-firebase-project-id

Development Fallbacks

For development, the app includes fallback values for non-sensitive configuration. In production, all required environment variables should be properly set.


Build & Deployment

  • EAS Build:
    • Configure builds in eas.json
    • Run eas build --platform ios or eas build --platform android
  • Reset Project:
    • To reset starter code: npm run reset-project

Security

This repository has been prepared for public release with the following security measures:

Fixed Issues

  • API Endpoints: Moved from hardcoded URLs to centralized configuration
  • Contact Information: Phone numbers now use environment variables
  • AWS Configuration: Removed sensitive Amplify files from repository
  • Personal Information: Removed developer-specific paths and names
  • Environment Variables: Created proper .env.example template

🔒 Protected Files

The following files are excluded from version control:

  • .env and environment-specific files
  • Amplify configuration files with sensitive data
  • AWS credentials and account information

📝 Configuration

  • All sensitive configuration is now centralized in src/config/environment.ts
  • Development fallbacks are provided for non-sensitive values
  • Production deployments should use proper environment variables

Credits

  • Built by the HouseFly team
  • Contact: HouseFly Team
  • Special thanks to all contributors and testers!

About

HouseFly - roommate matching mobile app (no longer live on app store or google play)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors