A comprehensive 3-sided marketplace connecting customers, home chefs, and drivers for home-cooked meal delivery.
RidenDine is a marketplace platform built with modern technologies in a monorepo architecture. Validate production readiness against current CI and monitoring. It enables:
- Customers to browse local chefs, order home-cooked meals, and track deliveries
- Chefs to manage menus, accept orders, and receive payments via Stripe Connect
- Drivers to accept delivery jobs and navigate to customers (Phase 2)
- Admins to approve chefs, manage orders, track commissions, and monitor platform metrics
This repository is built and maintained according to the architecture described in docs/ARCHITECTURE.md. That document is the canonical reference for:
- System design and technology stack
- Database schema and security model
- Payment and real-time flows
- Development, testing, and deployment workflows
All new features, migrations, and deployments should follow the patterns and best practices outlined in the architecture doc. Please review docs/ARCHITECTURE.md before making major changes or proposing new features.
ridendine-demo/
βββ apps/
β βββ mobile/ # React Native (Expo) app
β βββ admin/ # Next.js admin dashboard (ridendine-admin)
β βββ web/ # Customer-facing Next.js web app (ridendine-web)
βββ backend/
β βββ supabase/ # Database, Auth, Edge Functions
β βββ migrations/ # SQL migrations (schema + seed data + commission system)
β βββ functions/ # Serverless Edge Functions (Stripe)
βββ packages/
β βββ shared/ # TypeScript types, schemas, enums
βββ scripts/
β βββ seed.ts # Demo data seeder (creates accounts + sample data)
βββ docs/ # Documentation
βββ .github/workflows/ # CI/CD
- Mobile: React Native + Expo + expo-router
- Backend: Supabase (PostgreSQL + Auth + Storage + Edge Functions)
- Admin: Next.js 15 (App Router) + React
- Payments: Stripe Connect (marketplace payments)
- Maps: Google Maps API
- Deployment: Vercel (admin + web), EAS (mobile), Supabase Cloud (backend)
- Node.js >= 20.0.0 (see
.node-version) - pnpm >= 10.0.0 (
corepack enable && corepack prepare pnpm@10.0.0 --activate) - Supabase account
- Stripe account (for payments)
# Clone repository
git clone https://github.com/SeanCFAFinlay/ridendine-demo.git
cd ridendine-demo
# Install all dependencies (pnpm monorepo)
pnpm install
# Setup environment variables
cp apps/web/.env.example apps/web/.env.local
cp apps/admin/.env.example apps/admin/.env.local
# Edit .env.local files with your Supabase credentials# Build shared types (required first)
pnpm build:shared
# Run customer web app (ridendine-web)
pnpm --filter @home-chef/web dev
# Opens at http://localhost:3001
# Run admin dashboard (ridendine-admin)
pnpm --filter @home-chef/admin dev
# Opens at http://localhost:3000
# Build all apps
pnpm build
# Lint all apps
pnpm lint# Requires SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY in a local .env (not committed)
pnpm seedDemo accounts are created by the seed script if configured.
See scripts/seed.ts for the exact emails, roles, and passwords that are inserted.
Admin dashboard access: Admin login uses Supabase Auth (seeded admin user from
pnpm seed).
Role-based routing with authentication:
(auth)/- Sign in/up screens(customer)/- Browse chefs, order, track(chef)/- Menu management, order processing(driver)/- Delivery jobs, navigation (Phase 2)
Tech: Expo Router, Supabase Auth, React Native Maps
Server-rendered Next.js app for platform management:
- Chef approval workflow (approve, reject, suspend)
- Order monitoring with real-time updates
- Meal/dish management (feature, toggle availability)
- Commission tracking (view records, configure rate, CSV export)
- Analytics and metrics (orders, revenue, active chefs, customers)
Tech: Next.js 15 (App Router), Supabase SSR, PWA-enabled
PostgreSQL with Row Level Security (RLS):
profiles- User accounts (customer, chef, driver, admin roles)chefs- Chef profiles and verificationdishes- Simplified menu itemsorders/order_items- Order processing with tracking tokensdrivers- Driver profiles
Migrations: Located in backend/supabase/migrations/
Stripe Connect for marketplace payments:
- Platform collects 15% fee
- Direct payouts to chef connected accounts
- Edge Functions handle all Stripe operations securely
Edge Functions:
create_connect_account- Chef onboardingcreate_checkout_session- Customer paymentwebhook_stripe- Payment webhooks
- Architecture Guide - System design and components
- Environment Variables - Configuration guide
- MVP Plan - Development phases and roadmap
# Lint all packages
pnpm lint
# Build all packages
pnpm build
# Type check
pnpm typecheck
# Build shared package
pnpm --filter @home-chef/shared buildThis monorepo uses pnpm workspaces. Each Next.js app is deployed as a separate Vercel project linked to a subdirectory. Use the settings below when creating each project.
| Setting | Value |
|---|---|
| Root Directory | apps/web |
| Framework Preset | Next.js |
| Install Command | (leave blank) |
| Build Command | (leave blank) |
| Node.js Version | 20.x |
Required environment variables:
NEXT_PUBLIC_SUPABASE_URL=your-supabase-project-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=your-stripe-publishable-key
| Setting | Value |
|---|---|
| Root Directory | apps/admin |
| Framework Preset | Next.js |
| Install Command | (leave blank) |
| Build Command | (leave blank) |
| Node.js Version | 20.x |
Required environment variables:
NEXT_PUBLIC_SUPABASE_URL=your-supabase-project-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
Tip: You can also use
scripts/vercel-deploy.ps1to link and deploy both apps via the Vercel CLI in one step (see below).
These steps are deprecated. Follow the Vercel project settings above (leave install/build commands blank).
These steps are deprecated. Follow the Vercel project settings above (leave install/build commands blank).
- The mobile app is deployed with Expo Application Services (not Vercel).
cd apps/mobile
# Build for iOS
eas build --platform ios
# Build for Android
eas build --platform android
# Submit to app stores
eas submit-
Create Supabase Project
- Go to supabase.com
- Create a new project
- Note your project URL and anon key
-
Run Migrations
cd backend/supabase supabase link --project-ref your-project-ref supabase db pushOr follow
SETUP_SUPABASE.mdfor manual execution. -
Deploy Edge Functions
supabase functions deploy
-
Configure Stripe Webhooks
- Set your Stripe keys in Supabase secrets
- Configure webhook endpoint:
https://your-project.supabase.co/functions/v1/webhook_stripe - Note: Next.js webhook routes under
apps/web/app/api/webhooks/*are removed
- β Row Level Security (RLS) on all tables
- β No secrets in client code
- β Server-side Stripe operations only
- β Webhook signature verification
- β Environment-based configuration
Refer to FEATURES.md for the current feature status.
- Promo codes
This is a demonstration project. For production use, consider:
- Comprehensive test coverage
- Error tracking (Sentry)
- Performance monitoring
- Accessibility improvements
- Internationalization
MIT License - see LICENSE file
Built with:
- Supabase - Backend infrastructure
- Expo - Mobile development
- Next.js - Admin dashboard
- Stripe - Payments
- Google Maps - Location services
Note: This is an MVP implementation. For production deployment, implement additional security measures, testing, monitoring, and compliance requirements.