Project Info
RoomeyFinder helps people in Nigeria find compatible roommates and shared homes. Users create a profile, describe their living preferences, discover compatible matches, and connect only after mutual interest. The app is built with Next.js and Supabase, with privacy-conscious profile data, authenticated workflows, home listings, photo uploads, and database-backed matching.
Inspiration
In Nigeria and across Africa today, the skyrocketing cost of housing has made independent living nearly impossible for students and young professionals. To survive economically, pairing up to split the bills has shifted from an option to an absolute necessity. Yet, the current solution is broken. People are still forced to rely on chaotic Facebook groups or random Twitter threads to find housemates. Traditional housing apps focus heavily on property listings, forcing users to endlessly swipe through raw profiles without any real filter for personal alignment. We built RoomeyFinder to completely eliminate the guesswork, friction, and privacy risks of the traditional roommate hunt.
What it does
RoomeyFinder.com is a privacy-first, compatibility-driven roommate discovery platform designed to end the era of random internet searches. Instead of scrolling through an endless directory of strangers, our algorithm computes compatibility programmatically in the background based on location, budget, lifestyle, and home preferences. Privacy is at the core of the user experience. Personal data, sensitive living preferences, and contact information are fully locked and hidden from public view. When a match is calculated, users only see that they are fundamentally compatible. If you send an interest request, your personal info remains completely hidden until the other party explicitly accepts it. Once mutual interest is confirmed, the profiles unlock, contact details are revealed, and communication can safely begin.
How we built it
The platform is engineered using a robust, modern stack focused on speed, type-safety, and rigorous data security: Frontend & Routing: Built using Next.js (App Router) and React for fluid, multi-step onboarding flows, styled dynamically with Tailwind CSS. Backend & Database: Powered by Supabase (PostgreSQL), utilizing complex SQL functions to evaluate and rank user compatibility server-side. Security & Data Privacy: Relies heavily on Supabase Row Level Security (RLS) policies and private Storage buckets to ensure no user data is exposed without strict, programmatically verified mutual consent. Animation & UI Primitives: Accessible foundations via Radix UI and Lucide React, paired with clean, intentional motion powered by GSAP.
Challenges we ran into
This project marked our first time deep in the weeds with the Supabase CLI, requiring an incredibly meticulous loop of configuring migrations, storage rules, and testing database seeds locally. The biggest hurdle came during authentication setup. Our magic-link and social sign-ins kept throwing silent failures due to a URL mismatch between 127.0.0.1 and localhost within the local auth redirect rules. Because the underlying code logic was technically perfect, our AI development collaborator (Codex) couldn’t detect the environmental discrepancy and spent hours trying to refactor working code. The breakthrough came only when we stepped back, stopped relying blindly on AI suggestions, manually audited the environment configuration, and spotted the routing mismatch.
Accomplishments we're proud of
True Zero-Knowledge Browsing: Successfully implementing an architecture where users can confidently find high-quality living matches without broadcasting their personal lives or exact locations to the public internet. Deterministic Local Testing: Building a comprehensive local testing suite with 48 distinct seed accounts mimicking homeowners, pairs, and seekers, allowing us to validate matching logic instantly. Bulletproof RLS: Forcing authorization directly down into the database layer via PostgreSQL policies rather than relying on flimsy client-side checks.
What we learned
We walked away with a profound respect for strict local-first database development. More importantly, this hackathon taught us how to effectively pair with cutting-edge LLMs. While Codex and GPT-5.6 are phenomenal for accelerating UI builds and schema generation, they can easily get stuck in a loop when debugging subtle, environment-specific infrastructure bugs. Human intuition and careful system auditing are still irreplaceable.
What's next
The MVP proves that programmatic compatibility matching works safely. Next, we plan to implement a secure, anonymous real-time chat interface directly into the platform so matched users can iron out living agreements before exchanging telephone numbers. Additionally, we aim to expand our geocoding capabilities to map out neighborhood-specific security ratings, giving young Africans deeper insights into the safety of their potential shared spaces.
RoomeyFinder
RoomeyFinder helps people in Nigeria find compatible roommates and shared homes. Users create a profile, describe their living preferences, discover compatible matches, and connect only after mutual interest.
The app is built with Next.js and Supabase, with privacy-conscious profile data, authenticated workflows, home listings, photo uploads, and database-backed matching.
Repository
Public repository: github.com/RoomeyFinder/roomeyfinder-v2
How Codex and GPT-5.6 were used
OpenAI Codex, powered by GPT-5.6, was used as a development collaborator throughout the project. It helped with:
- Planning and implementing the Next.js roommate discovery flows and responsive UI
- Building and refining Supabase authentication, database, Storage, and Row Level Security workflows
- Developing compatibility matching, interest-based contact reveal, and home-listing functionality
- Creating and reviewing validation, seed data, database tests, and developer documentation
- Debugging issues, reviewing code quality, and running the project’s type-check, lint, formatting, build, and database test commands
All generated changes were reviewed, adapted, and tested as part of the project’s development process.
GPT-5.6 was integrated into the development workflow through Codex as an engineering collaborator. It was not called at runtime by the RoomeyFinder application. Codex assisted with planning, implementation, debugging, testing, and code review, while all changes were reviewed and validated by the developer.
Key product, engineering, and design decisions
- Mutual-interest contact reveal: Contact details remain private until both users express interest and the connection is accepted. This supports safer introductions and keeps discovery separate from unsolicited contact.
- Supabase Row Level Security and private Storage: User-owned data, private profile information, and uploaded photos are protected with database and Storage policies. This keeps authorization close to the data layer instead of relying only on client-side checks.
- Structured compatibility matching: Matching uses practical roommate criteria such as location, budget, lifestyle, and home preferences so users can understand why recommendations are relevant.
- Guided setup flows: Profile, preferences, and home details are collected through focused steps to reduce cognitive load and ensure the matching system has useful information.
- Responsive and reduced-motion-friendly UI: The interface is designed for mobile and desktop use, with animations kept purposeful and reduced when users prefer less motion. This balances visual polish with accessibility and usability.
- Database-backed local development: Deterministic seed data, migrations, and database/RLS tests were chosen so important user journeys and privacy rules can be tested repeatably before deployment.
This project was built with Codex through the Codex extension inside Visual Studio Code. Submission verification is provided through the /feedback Session ID from the main development thread:
Feedback Session ID: 019f6dd1-c281-7490-b97a-c00a670f61d2
Features
- Magic-link & social authentication with Supabase Auth
- Guided profile, preference, and home setup flows
- Roommate and shared-home discovery
- Compatibility matching based on location, budget, lifestyle, and home preferences
- Home listings with amenities, availability, and photos
- Mutual-interest workflow before contact details are revealed
- Private Supabase Storage buckets with access policies
- Responsive UI, dark mode, custom illustrations, and reduced-motion-friendly animations
- Local seed data and database tests for development
Tech stack
- Next.js App Router and React
- TypeScript
- Tailwind CSS
- Supabase Auth, Postgres, Storage, and Row Level Security
- GSAP for interface animation
- Radix UI and Lucide React for accessible interface primitives
- Geoapify for server-side location geocoding
Requirements
- Node.js 20 or newer
- npm
- A Supabase project for hosted development, or Docker and the Supabase CLI for local development
- A Geoapify API key for the location search endpoint
Getting started
Install dependencies:
npm install
Create a local environment file:
cp .env.example .env.local
Set the values in .env.local:
NEXT_PUBLIC_SUPABASE_URL=your-supabase-project-url
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your-publishable-or-anon-key
GEOAPIFY_API_KEY=your-geoapify-api-key
The Supabase publishable/anon key is safe to expose in the browser when database access is protected by correct Row Level Security policies. Never expose a Supabase service-role key or other secret key through a NEXT_PUBLIC_ variable.
Start the development server:
npm run dev
Open http://localhost:3000.
Local Supabase development
The repository includes migrations, deterministic seed data, storage configuration, and database tests.
Start the local Supabase stack and reset the database:
npm run db:start
npm run db:reset
In a second terminal, serve the local Edge Functions:
npm run functions:serve
Keep this process running while testing account deletion or other Edge
Function-backed flows. Without it, calls to /functions/v1/delete-account
return a 503 from the local Supabase gateway.
The local Supabase email inbox is available at http://localhost:54324. Magic links generated during local development appear there instead of being sent externally.
The seed creates 48 test accounts across homeowner, roommate-pairing, and home-seeker scenarios. Example emails include:
seed.homeowner.01@example.test
seed.pair.17@example.test
seed.home-seeker.33@example.test
Seed accounts use the local Supabase email flow. Use the inbox to open a magic link and complete the relevant user journey.
Run the database and RLS/matching tests with:
npm run test:db
Available scripts
| Command | Purpose |
|---|---|
npm run dev | Start the Next.js development server |
npm run build | Create a production build |
npm run start | Serve the production build |
npm run typecheck | Run TypeScript without emitting files |
npm run lint | Run ESLint |
npm run lint:fix | Apply ESLint fixes where possible |
npm run format | Format the repository with Prettier |
npm run format:check | Verify Prettier formatting |
npm run db:start | Start the local Supabase services |
npm run db:reset | Apply migrations and reseed the local database |
npm run test:db | Run Supabase database tests |
Before opening a pull request or submitting a build, run:
npm run typecheck
npm run lint
npm run format:check
npm run build
npm run test:db
Project structure
app/ Next.js routes, layouts, auth, and API handlers
components/ Reusable UI and roommate-flow components
hooks/ Client-side workflow and data hooks
lib/ Supabase clients, matching, validation, and utilities
assets/illustrations/ React/SVG illustrations used by the product UI
supabase/migrations/ Database schema, policies, functions, and storage rules
supabase/tests/ Database and Row Level Security tests
supabase/seed.sql Deterministic local development data
public/ Static assets
Security and privacy
The application uses Supabase Row Level Security to limit access to user-owned and private records. Profile contact details are intended to become visible only after an interest is accepted. Profile and home photo buckets are private and are governed by Storage policies.
Before deploying publicly, review the production Supabase policies and verify the complete auth, matching, interest, contact-reveal, and photo-access flows with non-seed accounts. Do not commit .env.local or production credentials.
Deployment
The app can be deployed to Vercel or another Next.js-compatible host.
Configure these production environment variables in the hosting provider:
NEXT_PUBLIC_SUPABASE_URL
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY
GEOAPIFY_API_KEY
Also configure the Supabase Auth site URL and redirect URLs for the deployed domain. Apply database migrations to the production project through the project’s normal Supabase migration workflow before enabling public traffic.
License
This project is proprietary and all rights are reserved. You may not use, copy, modify, distribute, sublicense, or commercially exploit this code without prior written permission from RoomeyFinder.
Analysis
View
Metric
- 42
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- HTMLIn code
- Next.jsIn code
- ReactIn code
- SQLIn code
- SupabaseIn code
- Tailwind CSSIn code
- TypeScriptIn code
8 of 8 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
552 KB
Source files
176
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
RoomeyFinder/roomeyfinder-v2
197 files · 972 KB · @ 44e9079
Structure
Interface
67 files · 34%Screens, components and styles rendered to the user.
+8 moreAPI & routing
1 file · 1%Request entry points: routes, handlers and controllers.
Application logic
20 files · 10%Domain rules, services and shared utilities.
Data & schema
39 files · 20%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript63%
- SQL19%
- Markdown17%
- CSS1%
- YAML0%
- HTML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 31- @radix-ui/react-checkbox
- @radix-ui/react-dropdown-menu
- @radix-ui/react-label
- @radix-ui/react-slot
- @supabase/ssr
- @supabase/supabase-js
- class-variance-authority
- clsx
- gsap
- lucide-react
- next
- next-themes
- react
- react-dom
- react-toastify
- tailwind-merge
- +15 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.