MessFinder is a comprehensive property, mess, and flat leasing search ecosystem. The solution provides a premium user experience for finding shared rooms (messes), apartments, and full houses.
Overview
MessFinder is a comprehensive property, mess, and flat leasing search ecosystem. The solution provides a premium user experience for finding shared rooms (messes), apartments, and full houses. The repository consists of: 1. (Root): A cross-platform mobile application built using React Native, Expo SDK 54, and Expo Router. 2. (admin/admin-dashboard): A high-performance web dashboard built using React, Vite, TypeScript, and Tailwind CSS v4. 3. : Powered by Supabase (PostgreSQL, Realtime, Storage, and Auth) with strict Row Level Security (RLS) policies. - (v18.0.0 or higher recommended) - or - app installed on your physical mobile device (to preview the mobile app) 2. : Create a .env file or export your variables for local run: 3. : Press a to run on an Android emulator, i to run on iOS simulator, or scan the QR code on your device using the Expo Go application. 3. : Create a .
README
MessFinder – Universal Property & Room Finder Solution
MessFinder is a comprehensive property, mess, and flat leasing search ecosystem. The solution provides a premium user experience for finding shared rooms (messes), apartments, and full houses.
The repository consists of:
- Expo Mobile Client (Root): A cross-platform mobile application built using React Native, Expo SDK 54, and Expo Router.
- Web Administrative Dashboard (
admin/admin-dashboard): A high-performance web dashboard built using React, Vite, TypeScript, and Tailwind CSS v4. - Backend Service: Powered by Supabase (PostgreSQL, Realtime, Storage, and Auth) with strict Row Level Security (RLS) policies.
🏗️ System Architecture
graph TD
subgraph "Clients"
A[Expo Mobile App - iOS/Android]
B[Vite Admin Web Dashboard]
end
subgraph "Backend Services (Supabase)"
C[Supabase Auth]
D[PostgreSQL Database]
E[Storage Buckets]
end
A -->|Authentication / API Queries| C
A -->|Data CRUD / Subscriptions| D
A -->|NID & Room Image Uploads| E
B -->|Admin Authentication| C
B -->|Moderate Users, Properties & Rooms| D
B -->|Review Uploaded NIDs| E
🛠️ Technology Stack
| Layer | Technologies | Key Capabilities |
|---|---|---|
| Mobile Client | React Native, Expo Router, Expo SDK 54, React Query | Cross-platform navigation, Native UI components, offline caching, and responsive design. |
| Web Dashboard | React 19, Vite 8, TypeScript, Tailwind CSS v4, Lucide Icons | Admin controls, metrics calculation, and user verification workflows. |
| Backend | Supabase, PostgreSQL, Row-Level Security (RLS) | Secure user registration, real-time comment synchronization, object storage, and DB triggers. |
| Styling | React Native StyleSheet (Mobile) & Tailwind CSS v4 + custom HSL palette (Web) | Seamless dark-mode support, smooth animations, and responsive screen spacing. |
📁 Repository Directory Structure
├── .expo/ # Expo build & cache configuration
├── admin/
│ └── admin-dashboard/ # Web administration panel (Vite + React)
│ ├── src/
│ │ ├── components/ # Reusable dashboard UI controls (ui.tsx)
│ │ ├── pages/ # Login and Dashboard pages
│ │ ├── lib/ # Supabase client initializer
│ │ ├── types.ts # TypeScript type declarations
│ │ ├── data.ts # Data fetchers, mutations, and authentication helpers
│ │ └── index.css # Core styles & Tailwind CSS v4 entrypoint
│ └── package.json # Dashboard project dependencies
├── app/ # Expo Mobile App Screen Routes (Expo Router)
│ ├── (tabs)/ # Main tab navigation (home, favorites, profile)
│ ├── property/ # Property detailed pages
│ ├── room/ # Room detail views and search results
│ ├── auth.tsx # Sign in / Sign up page
│ ├── reset-password.tsx # Forgot & Reset password screen
│ └── _layout.tsx # Global mobile router entrypoint
├── components/ # Reusable React Native mobile layout components
├── constants/ # Theme styling colors, tokens, and mock data templates
├── context/ # Global React contexts (Auth context, App state)
├── services/ # Supabase service layer and API integrations
├── supabase_schema.sql # Database schema definitions and RLS policies
└── package.json # Root React Native/Expo project configuration
⚡ Setup & Run Instructions
Prerequisites
- Node.js (v18.0.0 or higher recommended)
- npm or pnpm
- Expo Go app installed on your physical mobile device (to preview the mobile app)
1. Running the Mobile Application (Root)
-
Install Dependencies:
npm install -
Configure Environment Variables: Create a
.envfile or export your variables for local run:EXPO_PUBLIC_SUPABASE_URL=your_supabase_project_url EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key -
Start the Expo Dev Server:
npx expo startPress
ato run on an Android emulator,ito run on iOS simulator, or scan the QR code on your device using the Expo Go application.
2. Running the Admin Web Dashboard (admin/admin-dashboard)
-
Navigate to the Directory:
cd admin/admin-dashboard -
Install Web Project Dependencies:
npm install -
Configure Local Environment: Create a
.envfile underadmin/admin-dashboard:VITE_SUPABASE_URL=your_supabase_project_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key -
Launch the Development Server:
npm run dev -
Build for Production:
npm run build
🗄️ Database Schema & RLS Policies
The database is built on PostgreSQL inside Supabase, featuring strict security and access controls.
Tables Overview
profiles: Extends theauth.userssystem with additional attributes such as user role (renterorowner), status (verifiedorpending), phone number, and NID document upload references.properties: Physical listings associated with anownerprofile (types:mess,flat, orhouse).rooms: Individual rooms or spaces available inside a property, defining total/available seats, pricing, gender policies, and layout descriptions.favorites: Stores user-bookmarked rooms for quick profile access.comments: Real-time discussions and queries under individual room details.support_tickets: Facilitates renter/owner support queries directed to site administrators.
Security Implementation (RLS)
- Profiles: Users can select all profiles, but insert/update actions are restricted to their own account identity (
auth.uid() = id). - Properties & Rooms: Anyone can query listings, but write actions (create, edit, delete) are strictly limited to the verified owner of the parent property.
- Storage Policies: NID documents are securely saved inside private buckets accessible only by their respective owners and admin accounts. Room photos are publicly read-accessible but can only be uploaded by authenticated accounts.
🔒 Authentication Flow
The application implements a secure sign-up process:
- User Sign Up: Enter credentials and select your role (
renterorowner). - Access Granted: Upon sign-up, renters get immediate access to browse properties, and owners can start setting up their properties for verification.
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add tamzid-ibna-wahid/mess-finder-app