STStephen TioluwaniAll work

Client product · 2026

Marketplace · Web + native shell

Marketplace engineering

Africart

Commerce where identity, geography and money all affect the answer.

Africart is a multi-sided marketplace built across web and a native Capacitor surface. The deeper work has been canonical product identity, seller payout safety, location-aware delivery and making comparison logic obey the same rules as checkout.

The thesis

“A price is not really comparable if the cheaper item cannot be delivered to you.”

Canonical

Public URLs

Stable product/store slugs coexist with UUID internal identity and permanent legacy redirects.

Row-locked

Delivery handoff

Confirmation and dispute races serialize at the database boundary.

Server-priced

Delivery fees

Checkout recalculates area and product delivery fees instead of trusting client totals.

01 · Public performance

Render the marketplace before hydration has a chance to blink.

The homepage moved category counts, featured products and initial navigation state to the server so first-visible marketplace content arrives in the HTML rather than swapping in after hydration.

At the same time, products and stores gained stable human-readable slugs. Legacy UUID links permanently redirect to canonical URLs while internal cart, wishlist, reviews and realtime logic can continue using the durable UUID identity.

02 · Seller money

Creating a Stripe account also needs idempotency.

Seller country is read from the authoritative profile rather than hardcoded during Stripe Connect onboarding. Account creation takes a durable database claim first, freezes the country into that claim and uses a deterministic Stripe idempotency key.

If Stripe succeeds but the local linkage write fails, the next attempt searches for the account using creation metadata and can repair the linkage. A country mismatch or restricted seller fails closed before a new payout.

03 · Delivery handoff

The seller never owns the buyer’s confirmation secret.

Seller-controlled fulfillment stops at Shipped. That authoritative transition opens buyer confirmation, while the stored buyer code stays out of seller list/detail payloads and notifications.

Confirmation codes use cryptographically secure generation and atomic first-token claims. Database row locks serialize confirmation and dispute races; a dispute freezes payout, and a valid confirmation always enters the centralized payout release/recovery path.

04 · Comparison that respects reality

Best Price is a policy, not MIN(price).

Africart's price comparison now anchors listings to a master product and exact condition, then intersects them with the same location-based delivery eligibility used by the marketplace.

Out-of-stock offers may remain visible but cannot win Best Price. A cheaper listing outside the buyer's area never becomes a comparison offer. Add-to-cart targets the selected seller's actual listing rather than a duplicated price snapshot.

05 · Delivery pricing

Free, inherited and missing are three different values.

Sellers can define area-level delivery defaults and product-level overrides. A null override means inherit; zero explicitly means free delivery. Checkout resolves and snapshots the authoritative fee on the server so the browser cannot rewrite the shipping total.

What stayed with me

Africart is a good example of the work I enjoy most: turning business rules into invariants the system can actually enforce.

Next.jsSupabasePostgreSQLStripe ConnectClerkCapacitorTailwind CSS

Next case study

Pamastore

Making campus commerce trustworthy after the happy path ends.

↗