
Medusa Eats
https://github.com/medusajs/medusa-eats- Category
- Developer Tools
- Rank
- No. 1506Tools index
Previous survey · No. 1513 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- medusajs
- GitHub
- 262 stars
- Date
About
Uber Eats-style food delivery reference app built on Medusa 2.0 + Next.js 14 — clone it to bootstrap a real marketplace.
What it does
Medusa Eats demonstrates a three-party delivery system for customers, restaurants, and drivers. Customers browse menus and order food. Restaurants manage menus, receive orders, and report preparation progress. Drivers receive jobs and claim routes. A long-running workflow coordinates fulfillment, while server-sent events carry live status updates to dashboards.
Why it's ranked here
The project is useful because it connects commerce primitives to a concrete, multi-party order lifecycle. Custom restaurant and delivery modules, role-aware authentication, driver matching, and live tracking provide substantial architecture to study. Its value is educational, however: the maintainers explicitly call it an unmaintained hackathon demo and architectural reference.
What's good
The domain model covers the full handoff from cart through restaurant acceptance, preparation, pickup, transit, and delivery. Separate customer, restaurant, and driver experiences make permissions and operational responsibilities visible. Seed data provisions regions, currencies, tax areas, shipping choices, inventory, products, and a publishable API key, giving the example useful breadth.
Tradeoffs
This is not maintained by the core team and is explicitly not intended as a starter project. The backend falls back to generic authentication secrets when environment values are absent. Fulfillment uses a manual provider, while seeded shipping choices describe conventional parcel delivery rather than food courier timing. Production hardening, deployment guidance, and ongoing compatibility work are not established here.
How to use it well
Use it when designing a Medusa-based marketplace and you need working patterns for custom domain modules, actor-specific access, long-running order state, and live dashboards. Read the architecture, trace one order across all three roles, then selectively port concepts into a maintained codebase. Do not treat it as a production-ready foundation or a substitute for operational delivery infrastructure.
Technical notes+
The repository splits Medusa and Next.js concerns between /backend and /frontend. backend/medusa-config.ts registers restaurantModuleService, deliveryModuleService, and the manual fulfillment provider, but defaults JWT and cookie secrets to supersecret. backend/src/api/middlewares.ts authenticates restaurant and driver actors with bearer tokens and derives authorization context from app metadata. frontend/src/middleware.ts creates a daily _medusa_cache_id cookie and forwards it through x-medusa-cache-id. frontend/src/lib/config.ts configures the Medusa JavaScript SDK with an environment-selected backend URL and publishable key. backend/jest.config.js defines unit, HTTP integration, and module integration test matching. backend/src/scripts/seed.ts provisions commerce infrastructure and restaurant product data.
Observed
- Primary language
- TypeScript, with JavaScript configuration files
- Application surface
- Web storefront and role-specific restaurant and driver dashboards
- Backend interface
- Medusa HTTP API with bearer-token authentication and custom store routes
- Packaging
- Two-project repository containing separate backend and frontend directories
- Frontend stack
- Next.js 14, Tailwind CSS, and the Medusa JavaScript SDK
- Backend stack
- Medusa 2.0 with custom restaurant and delivery modules
- Realtime mechanism
- Server-sent events provide order status updates
- Test configuration
- Jest supports unit, HTTP integration, and module integration test patterns
Read from README.md, backend/jest.config.js, backend/medusa-config.ts, frontend/next.config.mjs, frontend/postcss.config.js, frontend/tailwind.config.ts, frontend/src/middleware.ts, backend/src/api/types.ts, frontend/src/lib/types.ts, backend/src/utils/index.ts, frontend/src/lib/config.ts, backend/src/scripts/seed.ts, frontend/src/app/layout.tsx, backend/src/api/middlewares.ts, backend/.medusa/types/index.d.ts.
What it can do
Browse restaurant menus and food options
User location and search criteria → List of available restaurants and their menu items
Place food orders from restaurants
Selected menu items and delivery details → Confirmed order with tracking information
Process payments for food orders
Order total and payment method → Payment confirmation and receipt
Track order delivery status
Order ID and user credentials → Real-time delivery progress updates
Manage restaurant inventory and availability
Restaurant admin credentials and menu data → Updated menu with current availability status
Calculate delivery fees and estimated times
Restaurant location, delivery address, and order details → Delivery cost and estimated arrival time
Handle user account registration and authentication
User credentials and profile information → Authenticated user session and profile
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.