Skip to content
Selected work

Employer platform · May 2020–Present

CraveUp - Restaurant Ordering & Management Platform

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

Connected restaurant platform

A sanitized employer-system view of customer ordering, merchant management, staff operations, and shared commerce services.

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.

03 Evidence

Evidence chapters.

02 / 04 · Product journey

Order lifecycle across three audiences

Fulfillment and payment state stayed aligned across customer, staff, and merchant surfaces without exposing real orders or account data.

03 / 04 · System boundary

One menu and order contract across three surfaces

Shared contracts kept menu, availability, fulfillment, payment, and order state coherent across three product audiences.

04 / 04 · Delivery / verification

Hands-on contribution scope

The non-sequential frame describes bounded contribution and functional technical leadership, not sole authorship or whole-product ownership.

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.

Book an intro callopens in a new tab