What Inspired Me

Dealing with roommate struggles and hearing countless stories from friends about theirs, I was inspired to make an app that tackles this problem head-on. I wanted to make the roommate searching process as fun and smooth as possible, ensuring quality roommate matches and reducing the friction between roommates before they even move in together.

The idea was simple: what if we could match people not just based on budget and location, but on personality, lifestyle preferences, and actual compatibility? What if finding a roommate could be as engaging as swiping through a dating app, but with the depth and thoughtfulness needed for such an important life decision?

What Roomies Does

Roomies is a personality-driven roommate matching app that goes beyond the basics. Here's what makes it special:

  • Smart Matching Algorithm: Uses MBTI personality types and lifestyle preferences to calculate compatibility scores
  • Tinder-Style Swiping: Makes browsing potential roommates fun and intuitive
  • Real-Time Messaging: Instant conversations when you match with someone
  • Place Listing: For people who already have a place and need roommates
  • Advanced Filtering: Budget ranges, location radius, move-in dates, and lifestyle preferences
  • Review System: Rate and review past roommates to build trust in the community

The app serves both roommate seekers and people with places to fill, creating a two-sided marketplace that benefits everyone.

How I Built It

I built the project structure and templates with Bolt.new, which gave me an amazing starting point. Then I further refined the pages and functionality with Claude, iterating on features and fixing bugs as I went. For the visual elements, I created the art and assets with ChatGPT, including our fun personality-based illustrations and the iconic potato placeholder image.

The backend was powered by Supabase, which turned out to be a game-changer for rapid development. The Supabase MCP server integration with Claude was incredibly helpful for database operations and real-time features.

Architecture Decisions

I went with a modern, scalable architecture from the start using the templates generated from bolt.new:

  • Expo + React Native for cross-platform mobile development
  • TypeScript throughout for type safety and better developer experience
  • Expo Router for file-based navigation (so clean!)
  • Zustand for state management (way simpler than Redux)
  • NativeWind for Tailwind-style CSS in React Native
  • Supabase for backend, database, auth, and real-time features

The app follows a layered service architecture with clear separation between UI components, business logic, and data access. I implemented a dual-store pattern to gradually migrate from mock data to real Supabase integration, which made development much smoother.

Challenges I Faced

The biggest challenge was definitely the backend integration. I was really new to backend development, but I learned as I was going. Setting up user authentication, database schemas, real-time subscriptions, and proper data synchronization was initially overwhelming.

The Supabase MCP server really helped here - being able to directly interact with the database through Claude made debugging and schema updates much more manageable. I went through several iterations of the database design as I better understood the relationships between users, matches, conversations, and roommate profiles.

Managing state across multiple stores while maintaining data consistency was tricky. I ended up with about 20+ different Zustand stores, which got complex quickly. The dual-store approach (legacy + Supabase stores) helped during migration but added complexity.

Real-Time Features

Implementing real-time messaging and match notifications was more complex than expected. Getting Supabase subscriptions working properly and handling edge cases like offline scenarios and connection drops required several iterations.

Type Safety Across the Stack

Maintaining TypeScript type safety from the database schema all the way through to UI components required careful planning. I used Supabase's type generation to create database types, then mapped these to application-specific interfaces.

What I'm Proud Of

Design and User Experience

I'm really proud of the design and art of the app. The personality-based matching feels intuitive, the swipe interactions are smooth, and the overall aesthetic is clean and modern. The potato placeholder became a fun signature element.

Feature Completeness

The app has a depth of features for a solo project:

  • Sophisticated personality matching algorithms
  • Real-time messaging with conversation management
  • Advanced filtering and search capabilities
  • Photo upload and management
  • User profiles with rich personality data
  • Place listing functionality
  • Review and rating system

Architecture Quality

The codebase is well-organized with clear separation of concerns. The component architecture scales well, the service layer is clean, and the TypeScript integration provides excellent developer experience and reliability.

What I Learned

The Power of AI-Assisted Development

I learned that using generative AI to make apps is quite fun and incredibly productive! The combination of Bolt.new for scaffolding, Claude for refinement and debugging, and ChatGPT for creative assets created a powerful development workflow. It allowed me to focus on the product vision while the AI helped with implementation details.

Backend Development

I gained hands-on experience with:

  • Database design and PostgreSQL
  • Real-time subscriptions and WebSocket connections
  • User authentication and authorization
  • API design and data modeling
  • Cloud deployment and scaling considerations

Mobile Development Patterns

Working with React Native and Expo taught me about:

  • Mobile-specific UI patterns and navigation
  • Performance optimization for mobile devices
  • AsyncStorage and offline-first design
  • Platform-specific considerations (iOS vs Android)

Product Development

Building a complete app from concept to implementation taught me about:

  • User experience design for mobile apps
  • Balancing feature complexity with usability
  • Iterative development and user feedback integration
  • The importance of good error handling and edge cases

What's Next for Roomies

Short-Term Goals

  • Enhanced Matching Algorithm: Incorporate more lifestyle factors and machine learning
  • Push Notifications: Real-time alerts for matches and messages
  • Video Profiles: Allow users to upload short video introductions
  • Group Housing: Support for finding multiple roommates for larger places
  • Verification System: Photo verification and university email confirmation

Long-Term Vision

  • AI-Powered Recommendations: Use machine learning to suggest compatible matches
  • Community Features: Roommate events, forums, and local housing groups
  • Landlord Integration: Partner with property managers for verified listings
  • International Expansion: Support for different markets and housing cultures
  • Smart Contracts: Blockchain-based roommate agreements and deposits

Technical Improvements

  • Performance Optimization: Implement image caching and lazy loading
  • Offline Support: Enhanced offline capabilities with sync
  • Analytics Integration: User behavior tracking and app performance monitoring
  • Testing Suite: Comprehensive unit and integration tests
  • CI/CD Pipeline: Automated testing and deployment

Final Thoughts

Building Roomies has been an incredible learning experience. It's shown me the potential of AI-assisted development and how quickly you can go from idea to working product with the right tools. The combination of modern frameworks, cloud services, and AI assistance creates opportunities for individual developers to build sophisticated applications that would have required entire teams just a few years ago.

I'm excited to continue developing and hope to build more apps in the future. The roommate problem is just the beginning - there are so many opportunities to use technology to solve real-world problems and make people's lives better.


Built with ❤️ and a lot of help from AI assistants

Built With

Share this project:

Updates