Angga.
← Back to all works

TreeDots

Senior Frontend Engineer

Apr 2022 — May 2024

Merchant App B2B and Supplier Dashboard

A regional B2B food-procurement platform for restaurants and food businesses across Singapore, Malaysia, and Indonesia — plus the admin dashboard suppliers used to manage the catalog.

B2B marketplaceReact NativeGraphQLPayments
Product browse screen with search, filter chips (History, Bookings, Favourite, All, Newest, Quotes), and a list of SKUs with prices.

The project

TreeDots is a B2B food marketplace operating across Southeast Asia. The Merchant App is the buyer-side product — restaurants, hotels, and other food businesses use it to browse SKUs, place orders, schedule deliveries, and settle invoices. The Supplier Dashboard is the admin-side companion: suppliers and internal staff use it to manage products, orders, and content.

I led frontend on the merchant app for two years, working alongside backend engineers, designers, and operations. The team shipped to iOS, Android, and the web from a single React/React-Native codebase via Capacitor, against a GraphQL API backed by Node and MySQL.

By the time I rolled off the team, the platform was handling 10,000+ monthly orders at 99.9% uptime, with regional procurement peaks that demanded careful caching and graceful degradation.

What I shipped

  • Built and maintained the product-listing and order-management flows across mobile (React Native via Capacitor) and web (React).
  • Integrated three payment gateways — Stripe, PayNow, and Xero — for invoice settlement, with the right callback handling and idempotency for each.
  • Integrated Tookan for last-mile delivery, mapping its 12 internal statuses to the 4 merchant-visible states the design system supported.
  • Implemented push and local notifications on iOS and Android for order lifecycle events (order placed, dispatched, delivered).
  • Reviewed pull requests, triaged production issues from Sentry, and ran data-patch pipelines for schema migrations.
  • Established SDLC patterns for the frontend team: branch conventions, PR templates, regression test suites, and on-call runbooks.

From the product

Product browse screen with search, filter chips (History, Bookings, Favourite, All, Newest, Quotes), and a list of SKUs with prices.
Product detail screen for a Korean Seafood Box, with photos, weight and packaging info, and an add-to-cart action.
Merchant App checkout screen showing delivery address, billing address, scheduled delivery time, and order total.

Challenges worth talking about

Localized delivery time estimates

Each market (SG / MY / ID) wanted delivery windows in its own format and timezone. Rather than expose three locale switches in the backend, I extended the Date handling at the client edge so the same backend timestamp rendered correctly per region. No backend ship required.

Delivery-tracking handoff

The Tookan integration started as a single-author module — hard to extend without the original context. I documented the webhook contract, mapped statuses, and wrote a fixture set so any teammate could onboard the integration in a day.

P99 page load on a mobile-first audience

Procurement managers were placing orders from the field on patchy mobile networks. I introduced code-splitting and lazy-loading for the order flow and shaved P99 load time by 30%, which materially improved retention on slow connections.

Mean Time To Resolution on incidents

Production incidents were taking too long to diagnose because logs lived in three places and the responder didn't know which to check first. I centralized observability through Sentry and LogRocket and shipped a one-page on-call runbook. MTTR dropped by half.

Stack

Backend

  • Node.js
  • GraphQL
  • MySQL
  • Prisma

Frontend

  • React
  • React Native
  • Capacitor

Streaming & data

  • Red Panda (Kafka-compatible)

Payments

  • Stripe
  • PayNow
  • Xero

Delivery & comms

  • Tookan
  • Twilio

Cloud & ops

  • Google Cloud Platform
  • Firebase
  • Sentry
  • LogRocket

Analytics

  • CleverTap

Outcomes

  • Scaled the marketplace to 10,000+ monthly orders across three countries.
  • Held 99.9% uptime through high-traffic procurement windows.
  • Cut post-release bugs by 40% via the regression testing and PR review framework.
  • Cut P99 load time by 30% with code-splitting and lazy-loading.
  • Cut MTTR on production incidents by 50% via centralized observability and a written runbook.
  • Accelerated feature time-to-market by 25% with a modular UI design system that streamlined design-to-engineering handoff.