Skip to main content

REMO - Real Estate Media Operations

A multi-tenant platform for real estate media companies to manage photography, videography, drone, and 3D scanning services.

Status

StatusActive
TypePersonal Project
Convex Deploymentrare-hedgehog-631

Overview

A full-featured SaaS platform for real estate media companies with:

Multi-Workspace Platform

  • Workspace isolation per media company
  • Role-based access (owners, admins, managers, photographers, editors, clients)
  • Custom branding with logo uploads
  • Public booking pages with shareable URLs

Booking & Scheduling

  • Address-driven workflow
  • Dynamic pricing (base + size multipliers)
  • Real-time availability with conflict prevention
  • Intelligent photographer assignment (40% rating, 30% proximity, 30% workload)

Core Services

  • Interior/Exterior Photography
  • Drone Photography
  • Video Walkthrough
  • 3D Virtual Tour
  • Service add-ons

Payment Processing

  • Stripe: Full payment processing with webhooks, subscription billing
  • Square: Alternative provider with OAuth
  • Tiered plans: Free, Pro, Enterprise
  • Refund support

Media Management

  • Dropbox: OAuth-connected cloud storage with auto-folder creation
  • REMO AUTO: AI-powered photo editing via Autoenhance API (HDR, Sky Replacement, Twilight)
  • Delivery sharing with payment-gated access

Team Collaboration

  • Job-linked conversation threads
  • Real-time notifications
  • Operations map (geographic job visualization)
  • Multi-timezone world clocks

Platform Administration

  • Super admin dashboard
  • Audit logging (member, role, job changes)
  • Revenue metrics and billing analytics

Tech Stack

  • Frontend: React 19, TypeScript, Tailwind CSS, Vite
  • Backend: Convex (real-time serverless database)
  • Auth: Convex Auth (Password + Google OAuth)
  • Payments: Stripe, Square
  • Storage: Dropbox
  • AI Editing: Autoenhance API
  • Email: Resend

Setup & Development

npm install
npm run dev # Starts both frontend and Convex backend

Separate servers:

npm run dev:frontend  # Vite dev server
npm run dev:backend # Convex dev server

Validation

npm run build  # Production build
npm run lint # Type-check + schema validation

Project Structure

src/
├── components/
│ ├── admin/ # Admin dashboard
│ ├── manager/ # Manager views
│ ├── platform/ # Platform admin
│ ├── BookingFlow.tsx # Multi-step booking
│ └── JobsList.tsx # Job dashboard
├── App.tsx # Main app with routing
└── SignInForm.tsx # Auth UI

convex/
├── schema.ts # Database schema
├── jobs.ts # Job CRUD and scheduling
├── workspaces.ts # Workspace management
├── workspaceMembers.ts # Team operations
├── payments.ts # Stripe processing
├── squarePayments.ts # Square processing
├── remoAuto.ts # AI editing integration
├── dropbox.ts # Dropbox OAuth/uploads
├── notifications.ts # Real-time notifications
├── auth.ts # Authentication
└── router.ts # HTTP routes/webhooks

Integrations

ServicePurpose
StripePayments, subscriptions, webhooks
SquareAlternative payment provider
DropboxCloud storage with OAuth
AutoenhanceAI photo editing (HDR, sky, twilight)
ResendTransactional emails

Handoff Notes

Environment Variables

Required API keys for: Convex, Stripe, Square, Dropbox, Autoenhance, Resend

Authentication

Uses Convex Auth with password + Google OAuth. Email verification required.