Inspiration As OSU students ourselves, we experienced the chaos of finding off-campus housing and dealing with furniture when subleasing. Students often struggle to connect with each other for housing needs, leading to last-minute scrambles and missed opportunities. We wanted to create a trusted, student-only platform that makes finding housing and furniture as seamless as possible.
What it does HomeHunt is a peer-to-peer marketplace exclusively for OSU students to:
Find housing: Browse sublease listings filtered by campus area (North, South, West, off-campus) and semester availability Buy & sell furniture: List and discover furniture from other students moving out Schedule tours: Book in-person meetings with listing owners through an integrated availability calendar Negotiate offers: Make and counter offers on furniture listings Visualize spaces: Experience listings through an interactive 3D photo viewer built with Three.js Stay safe: Automatic OSU email verification ensures only verified students can post listings. People cannot sign up unless they have a verified OSU email, we have javascript email validation. How we built it We built HomeHunt as a full-stack React application with a Supabase backend:
Frontend Architecture:
Built with React 18 and TypeScript for type safety Used Vite for lightning-fast development and optimized production builds Implemented shadcn/ui components with Tailwind CSS for a modern, responsive design Added smooth animations using Framer Motion Created an immersive 3D listing viewer with Three.js Backend & Database:
Leveraged Supabase for authentication, PostgreSQL database, and file storage Designed a normalized database schema with 12+ tables including listings, availability slots, tour requests, messages, and furniture offers Implemented Row-Level Security (RLS) policies to ensure students can only access their own data and public listings Created database triggers for automatic profile creation and statistics updates Key Technical Features:
Real-time messaging system using Supabase realtime subscriptions Form validation with React Hook Form and Zod schemas Optimistic UI updates with TanStack Query Image upload and management with Supabase Storage Date handling and formatting with date-fns Challenges we faced 3D Viewer Complexity: Building an intuitive cube-based photo viewer required understanding Three.js camera perspectives and user controls. We iterated multiple times to get the rotation and navigation feeling natural.
RLS Policy Design: Ensuring data security while allowing legitimate access was tricky. We had to carefully craft PostgreSQL policies that prevent privilege escalation while allowing listing owners, buyers, and tour requesters appropriate access.
Real-time Updates: Synchronizing availability slots and tour requests across users required understanding Supabase's realtime capabilities and handling edge cases like double-bookings.
OSU Email Verification: Implementing automatic verification for @osu.edu emails while handling edge cases and preventing fake accounts required careful trigger design.
Mobile Responsiveness: Making complex features like the 3D viewer and availability calendar work smoothly on mobile devices required extensive CSS and touch event handling.
What we learned How to architect a secure multi-user marketplace with proper authentication and authorization PostgreSQL advanced features like triggers, enums, and RLS policies Real-time data synchronization patterns 3D graphics programming with Three.js The importance of user experience in peer-to-peer platforms What's next for HomeHunt AI-powered scam detection: Analyze listing descriptions and photos to flag suspicious posts In-app payments: Integrate Stripe for secure furniture transactions Review system: Allow students to rate their sublease/furniture transaction experiences Push notifications: Alert users about new messages, tour requests, and offer updates Mobile app: Build native iOS/Android apps for better mobile experience
Built With
- authentication
- backend
- css
- data
- database:
- date-fns
- form
- framer
- lucide
- management:
- motion
- notifications)
- postgresql
- primitives)
- query
- query)
- radix
- react
- rls)
- router
- row-level
- security
- shadcn/ui
- sonner
- state
- storage
- supabase
- tailwind
- tanstack
- three.js
- toast
- typescript
- ui
- utilities:
- vite
- zod
Log in or sign up for Devpost to join the conversation.