REMO - Real Estate Media Operations
A multi-tenant platform for real estate media companies to manage photography, videography, drone, and 3D scanning services.
Status
| Status | Active |
| Type | Personal Project |
| Convex Deployment | rare-hedgehog-631 |
Links
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
| Service | Purpose |
|---|---|
| Stripe | Payments, subscriptions, webhooks |
| Square | Alternative payment provider |
| Dropbox | Cloud storage with OAuth |
| Autoenhance | AI photo editing (HDR, sky, twilight) |
| Resend | Transactional 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.