MotoCargo is a B2B procurement and logistics MVP for restaurants and produce providers in Seville, Spain.
The mobile app now defaults to a public restaurant demo mode. It launches without login and runs the ordering flow entirely on curated demo data unless you explicitly switch EXPO_PUBLIC_APP_MODE=live.
apps/mobile: Expo React Native app for restaurants and producersapps/admin: Next.js admin panel for invites, city rules, and catalog operationspackages/types: Shared domain types and Zod schemassupabase: SQL migrations, seed data, RLS policies, and Edge Functions
- Node.js 20+
- npm 10+
- Supabase CLI
npm install
npm run dev:mobile
npm run dev:adminCreate .env from .env.example and set:
EXPO_PUBLIC_APP_MODE(demoby default, useliveonly when wiring a real backend)EXPO_PUBLIC_SUPABASE_URLEXPO_PUBLIC_SUPABASE_ANON_KEYNEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEY
supabase start
supabase db resetEdge functions live under supabase/functions:
contracts-create-draftcontracts-request-revisioncontracts-acceptorders-validate-complianceorders-checkoutorders-generate-recurringnotifications-dispatch
Invoke locally with Supabase CLI after supabase start.
- Role-based auth for restaurants and producers
- Contract lifecycle: draft, revision request, acceptance and activation
- Order lifecycle with compliance validation and recurring plan automation
- Seville-specific city rules and delivery constraints
- Admin panel for invitations, city rules, producers, contracts and orders