1 OAK MLS

Getting Started

Introduction to the 1 OAK MLS Platform - Multi-tenant MLS/IDX platform for real estate agents

1 OAK MLS Platform

Welcome to the documentation for the 1 OAK MLS Platform — a multi-tenant real estate listing platform that powers agent websites with MLS data.

Overview

This platform:

  • Ingests MLS data from Bridge Interactive (RESO Web API / OData)
  • Stores canonical listings in Supabase Postgres
  • Indexes to Typesense for fast faceted search
  • Serves Next.js admin (internal) + client sites (per-agent marketing sites)
  • Supports agent photo uploads with MLS fallback
  • Provides service area pages for neighborhood browsing
  • Offers categorized import tasks (personal, office, search, custom)

First client: Lainey Levin (Workspace #1)

Scope: Miami-area luxury real estate, ~2,000+ listings

Tech Stack

LayerTechnology
DatabaseSupabase (Postgres + Auth + RLS)
SearchTypesense (self-hosted or Typesense Cloud)
FrontendNext.js 14+ (App Router)
StylingTailwind CSS
Sync WorkerNode.js/TypeScript
DeploymentVercel (frontend) + Supabase (backend)

Architecture

┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│  Bridge/RESO    │────▶│   Sync Worker    │────▶│    Supabase     │
│  (MLS Data)     │     │  (Node.js/TS)    │     │   (Postgres)    │
└─────────────────┘     └──────────────────┘     └────────┬────────┘
                                │                         │
                                ▼                         │
                        ┌──────────────────┐              │
                        │    Typesense     │◀─────────────┘
                        │  (Search Index)  │
                        └────────┬─────────┘

                    ┌────────────┴────────────┐
                    ▼                         ▼
            ┌──────────────┐          ┌──────────────┐
            │  Admin App   │          │ Client Sites │
            │  (Internal)  │          │ (Per-Agent)  │
            └──────────────┘          └──────────────┘

Key Design Principles

  1. Multi-tenant first: Every table has workspace_id. No exceptions.
  2. Source of truth: Postgres is canonical; Typesense is derived index
  3. Incremental sync: Use ModificationTimestamp to pull only changes
  4. Keep raw data: Store original MLS payload in listings.raw for debugging
  5. Compliance ready: Each workspace can configure attribution/disclaimer text

Core Architecture

Features

Admin & Development

  • Admin UI — Admin UI routes and screens
  • Tasks — Implementation task breakdown

On this page