Skip to content
Selected work

Employer platform · May 2020–Present

CraveUp - Restaurant Ordering & Management Platform

Problem
Guests, staff and merchants each needed their own screens, all reading the same menus, orders and payments.
My role
Frontend to full-stack engineer, now Director of Engineering, hands-on across ordering, dashboard, staff app and Square/Clover integrations.
What changed
Customer web ordering, the merchant dashboard, the React Native staff app with printing, and shared Node.js services shipped and kept in sync.
What was verified
Production fixes for launch-day order visibility and timezone validation were deployed and acknowledged; scope is bounded to my contribution.
See where this fits in the order lifecycle

A multi-surface restaurant commerce platform built at Crave - customer web ordering, a merchant business-manager dashboard, a React Native order-manager app, and shared Node.js services for orders, menus, payments, and live staff updates.

01 / 04 · System overview

How restaurant teams stay connected

Crave employer product: customers order, staff handle food preparation, and managers follow progress through connected tools. Private records are removed.

01 Scope

The product context behind the work.

Problem

Restaurant ordering is not one screen. Customers need a reliable web ordering flow, owners need a dashboard for menus, locations, discounts, customers, and orders, and in-store staff need a fast order-manager app that reflects the same order and menu state in real time.

My contribution

  • Built customer web ordering flows across menu browsing, cart, checkout, fulfillment selection, discounts, tips, fees, and Stripe-backed payment methods.
  • Built merchant business-manager surfaces for dashboard analytics, order management, customers, discounts, locations, team/API keys, menu operations, item availability, store hours, fulfillment settings, and Stripe account/subscription flows.
  • Built React Native order-manager workflows for active and scheduled orders, live Socket.IO updates, order state actions, item availability, pause/resume behavior, and receipt printing.
  • Worked across shared Express/MongoDB services so the web ordering app, dashboard, and in-store app stayed aligned around orders, menus, locations, payments, and provider events.

Selected production stories

  1. Story 01 · Mobile operations

    Implementation and deployment confirmed

    Built a production printer workflow for in-store order management

    Problem
    Restaurant staff needed an order-manager release that could discover, connect, disconnect, persist, and print through two widely used receipt-printer families.
    My contribution
    I built the React Native printer-management flow, native and platform wiring, persistent printer state, receipt printing, the official-SDK migration, connection repairs, and server-side printer-setting and error reporting.
    Verified result
    The feature set was pushed to production and the team prepared the location for go-live.
    Proof boundary
    External merchant acceptance was not recovered, and I do not claim sole ownership of the full order-manager product.
  2. Story 02 · Production debugging

    Confirmed delivery

    Fixed timezone validation that was rejecting valid scheduled orders

    Problem
    Valid orders were rejected because fulfillment validation compared the schedule against server time instead of the restaurant location's timezone.
    My contribution
    I diagnosed the timezone mismatch, implemented location-aware schedule comparison, tested and merged it, then refined interval date binding and the customer-facing error.
    Verified result
    The fix reached the main production branch and the customer was notified.
    Proof boundary
    No independent measurement of customer recovery was retained.
  3. Story 03 · Production incident

    Confirmed production fix

    Restored launch-day order visibility in the merchant dashboard

    Problem
    During a new-store launch, incoming orders were missing from the merchant dashboard because order and analytics date filters used the wrong timezone.
    My contribution
    I corrected the date parsing in the order-list and analytics paths, merged the production fix, and reported completion.
    Verified result
    The fix was deployed during the launch incident and acknowledged by the stakeholder.
    Proof boundary
    No separate customer screenshot or runtime trace was retained.

02 Approach

Important engineering decisions.

CraveUp is a restaurant ordering and management platform built at Crave. It spans customer web ordering, a merchant business-manager dashboard, a React Native order-manager app, and shared Node.js services for orders, menus, payments, live updates, and provider events.

On the customer side, the web ordering flow covers menu browsing, cart, fulfillment selection, checkout, payment methods, discounts, tips, fees, and order creation. The flow supports several restaurant fulfillment patterns, including takeout, delivery, table-side, room service, ASAP orders, and scheduled orders.

On the merchant side, the business manager gives operators the surfaces needed to run the store: dashboard analytics, order list/detail/export, customer views, discounts, locations, team/API-key access, menu operations, item availability, store hours, fulfillment settings, and Stripe account/subscription flows.

For in-store staff, the React Native order-manager app handles the operational loop: active orders, scheduled orders, order history, live Socket.IO order updates, confirm/ready/complete/cancel/refund paths, item availability, order pause/resume behavior, and receipt printing through supported printer integrations.

Underneath, the platform is held together by shared Express/MongoDB services: public ordering APIs, admin APIs, order lifecycle routes, receipt image generation, Socket.IO merchant/location rooms, Stripe payment and account surfaces, and generic provider/webhook integrations. The proof focus is the system breadth: one commerce platform across customer, merchant, staff, and backend surfaces.

My recent contributions include Square and Clover integration engineering across catalog imports and request controls, durable outbound order fulfillment, settlement reconciliation, and terminal event recovery. A September 2026 source review confirmed this work on the development branch. Production delivery and physical merchant or device acceptance were not independently verified.

Contribution evidence

I have been a core contributor to Crave's platform monorepo since 2024, working across the partner dashboard, storefront, marketing site, and Express APIs. The contribution bullets above describe my scope within the team-built platform.

My public open-source contributions are visible under mumar20 in Crave Open Source's Loyalty Interchange Protocol (Apache-2.0) and CraveJS Storefront SDK for Dart.

Crave's public site describes its work as building and launching a guest app for an 80-location restaurant brand, airport ordering, and hotel in-room ordering. These are Crave's descriptions of its work; my own contribution claims remain bounded to the scope and evidence in these case studies.

I have also contributed to Crave's Nomly AI assistant and, since September 2026, CaterVox, its voice catering manager. These are Crave's products, built by a team.

03 Evidence

How it works.

02 / 04 · Product journey

From ordering to preparing food

Customers place an order, staff handle it, and managers track progress. The tools share order and payment status.

03 / 04 · System boundary

One menu and order record

Shared services keep menus, availability, payments, and order status aligned across customer, manager, and staff tools.

04 / 04 · Delivery / verification

Where I contributed

I contributed across these tools and provided functional technical leadership within a team. This map shows areas of work, not sole ownership or a delivery sequence.

04 Delivered & verified

What the public proof supports.

Delivered scope

Customer side

Web ordering from menu discovery through cart, fulfillment selection, checkout, payment, and order creation

Merchant side

Dashboard surfaces for orders, analytics, customers, discounts, menu operations, locations, fulfillment settings, and team/API access

Staff side

React Native order manager for live order events, status transitions, item availability, pause/resume behavior, refunds/cancellations, and receipt printing

Stack

Next.jsReactReact NativeTypeScriptNode.jsExpressMongoDBSocket.IOStripe

Reflections

  • The hard part was consistency: menus, prices, fulfillment rules, payment state, and order state had to read correctly across customer web, the merchant dashboard, and the in-store app.
  • Each surface served a different user - customer, owner/operator, and staff - but all three depended on the same order and menu contracts.

Next step

Have a similar project?

If this looks close to the product work you need, book a short call and I will help scope the next step clearly.