TI

tamzid-ibna-wahid/mess-finder-app

Developer tools
0 stars Quality 45 Trend 8

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:

  1. Expo Mobile Client (Root): A cross-platform mobile application built using React Native, Expo SDK 54, and Expo Router.
  2. Web Administrative Dashboard (admin/admin-dashboard): A high-performance web dashboard built using React, Vite, TypeScript, and Tailwind CSS v4.
  3. 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)

  1. Install Dependencies:

    npm install
    
  2. Configure Environment Variables: Create a .env file or export your variables for local run:

    EXPO_PUBLIC_SUPABASE_URL=your_supabase_project_url
    EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
    
  3. Start the Expo Dev Server:

    npx expo start
    

    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.


2. Running the Admin Web Dashboard (admin/admin-dashboard)

  1. Navigate to the Directory:

    cd admin/admin-dashboard
    
  2. Install Web Project Dependencies:

    npm install
    
  3. Configure Local Environment: Create a .env file under admin/admin-dashboard:

    VITE_SUPABASE_URL=your_supabase_project_url
    VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
    
  4. Launch the Development Server:

    npm run dev
    
  5. 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 the auth.users system with additional attributes such as user role (renter or owner), status (verified or pending), phone number, and NID document upload references.
  • properties: Physical listings associated with an owner profile (types: mess, flat, or house).
  • 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:

  1. User Sign Up: Enter credentials and select your role (renter or owner).
  2. Access Granted: Upon sign-up, renters get immediate access to browse properties, and owners can start setting up their properties for verification.
View this README on GitHub

Recommended Tools

Try a different keyword or remove a filter.

Install

npx skillfish add tamzid-ibna-wahid/mess-finder-app