Auqli Server
Type
Platform
Status
In production
Context
Auqli · Software Engineer
Period
2022 – 2024
Source
Private
10
domain modules
3
payment & logistics providers
A Node.js and Express platform structured as a modular monolith, with each domain owning its own routes, controllers, services and repositories behind a shared HTTP and real-time layer. I built core backend services: the v2 order lifecycle and its state machine, the buyer wallet and settlement ledger, webhook infrastructure across three payment and logistics providers, and the real-time layer behind live seller broadcasts and auction bidding. Real-time live-commerce workloads were kept separate from the transactional order and payment services, so high-frequency stream events never contended with checkout writes.
Modular monolith, module-per-domain with a repository layer · MongoDB with versioned migrations · Socket.io real-time layer · Agenda job scheduling · signature-verified webhook ingestion with delivery logs and replay · Agora, FFmpeg, Smile Identity, Stripe-class payment and multi-carrier logistics integrations
- 01Built backend services for a live-shopping marketplace covering auth, sellers, products, orders, payments and logistics.
- 02Separated real-time live-commerce workloads from the transactional order and payment services, so high-frequency stream events did not contend with checkout writes.
- 03Designed the v2 order lifecycle end to end: the state machine and service interfaces behind multi-carrier shipping, payment capture and verification, returns, refunds and dispute resolution — with an explicit money outcome at every terminal state.
- 04Engineered webhook infrastructure spanning three payment and logistics providers, with signature verification, persisted delivery logs and replay endpoints that cut production incident diagnosis from hours to minutes.
- 05Built the real-time layer: auction bidding over WebSockets with a REST fallback, so a dropped socket on a flaky mobile network never means a lost bid, plus live-stream session management and server-side video processing for seller broadcasts.
- 06Designed and shipped the buyer wallet system covering balances, top-ups, held funds and transaction history, alongside the revenue and livestream analytics sellers use daily.
- 07Integrated identity verification (Smile Identity KYC), social sign-in, and push notification providers, and rebuilt the media pipeline with server-side image optimisation plus a backfill migration across existing assets.
- 08Owned production: containerised deployments, CI/CD across staging and production via CircleCI, runtime monitoring, and versioned database migrations through migrate-mongo.
Drawn from the source
Services, data ownership, message flow and failure paths. Drag to pan, scroll to zoom, or open any diagram fullscreen.
Marketplace backend architecture
A modular monolith organised by domain, with routes, controllers, services and repositories layered inside each module. Deliberately not microservices: one team, one deploy, clean seams where a split would go later.
The decisions worth talking through: where the interesting work was choosing between options, not writing the code.
Note 01
Why a modular monolith and not microservices
The domain decomposition is real — orders, products, sellers, buyers, live streams and admin each own their own routes, controllers, services, repositories and models. What it deliberately does not have is a network boundary between them. With one team and one deploy, distributed transactions and per-service infrastructure would have bought failure modes without buying independence. The seams are drawn where a split would eventually go, so extraction stays a refactor rather than a rewrite.
Note 02
Webhooks as infrastructure, not endpoints
Three external providers, each with its own signature scheme and retry behaviour, all mutating order and money state. Treating them as ordinary route handlers makes every incident an archaeology exercise. Instead every inbound payload is signature-verified, persisted to a request log before it is processed, and replayable on demand — which is what turned "the carrier says they sent it" from a multi-hour investigation into a single query.
Node.js / Express / JavaScript / MongoDB / WebSockets / Socket.io / Redis / Docker / AWS / CircleCI / FFmpeg