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.
- Overview
- Features
- Onboarding Flow
- Data Models
- API Integration
- Project Structure
- Setup & Development
- Environment Configuration
- Build & Deployment
- Security
- Credits
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
- 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)
- Welcome Screen:
- Introduction to HouseFly and its mission
- Button to get started
- 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
- Choose between:
- Profile Completion:
- Users complete their profile (not shown in onboarding, but required for matching)
- 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
- 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
- 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
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
npm install
# or
yarn install# 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- Never commit
.envfiles to version control - All sensitive values are now environment-dependent
- The app will fail to start in production if required variables are missing
npx expo start- Open in Expo Go, iOS Simulator, or Android Emulator as prompted
npm run lint
npm run testThe app uses a centralized configuration system located in src/config/environment.ts.
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-idFor development, the app includes fallback values for non-sensitive configuration. In production, all required environment variables should be properly set.
- EAS Build:
- Configure builds in
eas.json - Run
eas build --platform iosoreas build --platform android
- Configure builds in
- Reset Project:
- To reset starter code:
npm run reset-project
- To reset starter code:
This repository has been prepared for public release with the following security measures:
- 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.exampletemplate
The following files are excluded from version control:
.envand environment-specific files- Amplify configuration files with sensitive data
- AWS credentials and account information
- 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
- Built by the HouseFly team
- Contact: HouseFly Team
- Special thanks to all contributors and testers!