AZ
All writing
1 min read

One shared API behind web and native

turboreponextjsreact-nativemonorepomarketplace
Part of the projectAdvertaA Nigeria business advertising/marketplace: free listings, paid boosts, in-app chat, a campaign builder, and agency white-label.View project

Adverta is a Nigeria-focused advertising and marketplace product: free listings, paid boosts, in-app chat, a campaign builder, and an agency white-label mode. Two clients, web and native, front all of that — and they speak to exactly one backend.

The monorepo is the contract

Adverta is a Turborepo with a web app, a native mobile app, and a shared HTTP API. Keeping all three in one repo makes the API contract a first-class, enforced boundary rather than a document that drifts. When the API changes, both clients change against it in the same commit; there is no "the mobile app is two versions behind the endpoint" class of bug.

Where the product gets interesting

The monetization surface is what separates this from a classifieds clone:

  • Boosts and campaigns need a billing-aware model — a listing's visibility is a paid, time-bound thing.
  • Agency white-label needs a genuine multi-tenant story, because agencies resell the platform under their own brand.

Keeping it isolated

Under the hood, a per-operation database/service and IAM model (the "Golden Bite arch") keeps capabilities separated, Redis backs the fast paths, and Prometheus supplies metrics. The shared-API discipline up top and the per-operation isolation down below are the same instinct pointed in two directions: one contract for clients, many small authorities for operations.

Back to the projectAdvertaSee the full case study and related write-ups.View project