A high-performance, zero-brokerage rental property discovery platform built with a dark glassmorphic interface.
Features • Architecture • Security Model • Setup Guide • Roadmap
Finding a room shouldn't come with a premium middleman tax. RoomFinder solves this by connecting tenants directly with property owners. Featuring instant peer-to-peer phone access, responsive visual carousels, and an isolated, secure owner administration cockpit, it is the modern answer to rental discovery.
| 👤 Tenant Experience | 💼 Owner Experience |
|---|---|
| Instant Search & Filters: Filter properties seamlessly by area, landmark, rent constraints, property layouts, and tenant compatibility. | Secure CRUD Cockpit: Create, view, edit, and safely delete listings from a single, responsive dashboard. |
Instant Peer-to-Peer Dialing: Direct tel: links to property owners, enabling single-click communication on mobile viewports. |
Multi-Image Storage Pipeline: Multi-file drag-and-drop uploads directly to Supabase storage with automatic extension filters. |
| Smooth Visual Carousels: Glide through high-resolution property galleries with interactive layout indicators. | Isolated Data Safeguards: RLS-backed transactions restrict listings so only the authentic owner can mutate or delete their entries. |
RoomFinder relies on a highly responsive, unified SSR-CSR hybrid data loop that leverages Next.js App Router and Supabase BaaS:
┌───────────────────────────────────────────────────────────────────┐
│ Client Browser │
│ (Next.js Client Components, Toast Context, Interactive UI) │
└─────────────────────────────────┬─────────────────────────────────┘
│
HTTPS Requests / Cookie Sync
│
┌─────────────────────────────────▼─────────────────────────────────┐
│ Next.js Server Layer │
│ (App Router, React Server Components, Server-Side Cookie Auth)│
└─────────────────────────────────┬─────────────────────────────────┘
│
Supabase SDK Operations
│
┌─────────────────────────────────▼─────────────────────────────────┐
│ Supabase Backend Services │
│ (Auth & JWT Manager ➔ PostgreSQL Database ➔ Storage Bucket) │
└───────────────────────────────────────────────────────────────────┘
- RSC Data Loading: Public listings (
/rooms) and dashboards (/owner/rooms) fetch directly from Supabase within React Server Components. This completely eliminates loading states, enhances SEO performance, and secures database calls. - Unified Auth Exchange: Next.js uses middleware and
@supabase/ssrto dynamically retrieve auth sessions from server-side cookies, sharing authentication state securely between the browser and edge servers.
Data security is built directly into RoomFinder’s database schema using PostgreSQL Row Level Security (RLS).
Rather than relying on vulnerable API validation endpoints, the system delegates security checks directly to PostgreSQL:
-- Enable Row Level Security
ALTER TABLE rooms ENABLE ROW LEVEL SECURITY;
-- 1. Enable public read access for all visitors
CREATE POLICY "Public Read Access" ON rooms
FOR SELECT USING (true);
-- 2. Restrict row insertions to logged-in users matching their own ID
CREATE POLICY "Authenticated Owner Insert" ON rooms
FOR INSERT WITH CHECK (auth.uid() = owner_id);
-- 3. Restrict updates and deletions exclusively to the row's owner
CREATE POLICY "Owner Mutation Control" ON rooms
FOR ALL USING (auth.uid() = owner_id);- Read Operations: Set as a public bucket to allow instant image loading for listing galleries.
- Write Operations: Bucket write policies constrain file paths to standard patterns (e.g.
bucket/owner_id/filename), ensuring authenticated owners can only upload to, and delete from, their own directories.
Get RoomFinder running locally in minutes:
git clone https://github.com/Sudarshan25092007/Room-Finder-Web.git
cd Room-Finder-Webnpm installCreate a .env.local (or edit your existing .env) in the root directory:
NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your-supabase-anon-keynpm run devOpen http://localhost:3000 in your web browser to explore.
- Next-Gen Image Processing: Integrate
next/imageinImageCarouselandRoomCardfor automatic WebP conversion and responsive viewports. - Interactive Maps: Embed an interactive Mapbox canvas to pinpoint room locations.
- Real-Time Tenant Messaging: Build an in-app messaging terminal using Supabase Realtime tables.
- Search Auto-Suggestions: Integrate search autocomplete matching regional landmarks.
Developed with ❤️ by Sudarshan Patil H J