Multi-sided marketplace with real-time notifications (Socket.IO), Paystack payment integration, dual-order management for food delivery and e-commerce, and geospatial rider tracking.
A Node/TypeScript backend powering a four-sided marketplace: customers, two kinds of merchants, and delivery riders, all converging on one shared platform for payments, notifications, and dispatch. Each role has its own auth flow and order lifecycle, but every transaction has to stay consistent across all of them.
The interesting engineering wasn't the happy path — it was everything that breaks when money and physical goods are involved. Payment splits between merchants and the platform that have to land in the right wallets every time. Order state machines that need to survive crashed apps, dropped sockets, and payment webhooks arriving out of order or arriving twice. Ledgers that have to reconcile cleanly after a partial refund. Media buckets that slowly fill with orphaned uploads from abandoned listings.
Most of what I'm proud of in this project isn't visible to the end user. It's the recovery scripts that reconstruct orders from payment provider records when something fails midway. The scheduled cleanup crons that keep storage costs honest. The careful state transitions that make sure a rider disconnect mid-delivery doesn't leave the customer hanging or the vendor unpaid. The kind of work that only matters when things go wrong — which, in production, is constantly.
- Multi-role auth with social SSO, email and phone verification, and role-based access control
- End-to-end order lifecycle from cart to settlement, with deterministic recovery paths for every failure mode
- Payment integration with automatic multi-party splits, virtual accounts, and refund flows driven by webhooks
- Append-only transaction ledger backed by an event log for reconcilable wallet history
- Real-time order tracking and live dispatch updates over WebSockets
- Production hardening: scheduled media-cleanup jobs, order-recovery tooling, refund scripts, rate limiting, input validation
