Back to articles

How a small team ships multiple products in parallel

BOU runs Xtate, Ninja, BOSS, BouCloud, and a handful of others without a 200-person org. The trick is not headcount. The trick is shared plumbing.

Shared infrastructure powering several BOU products at once
Photo: replace with selected Unsplash image (credit photographer)

Fewer moving parts means more shipping. That is the whole secret.

People ask how a small team in Abuja can run five or six products in parallel. The honest answer is unglamorous: we share almost everything underneath, and we keep the surface area of every individual product as small as we can get away with.

One platform, many products

Every BOU product runs on BouCloud. Not because we love writing infrastructure (we do not). Because the second time we set up auth, monitoring, queues, and storage from scratch for a new product, we realised we were paying that tax forever. So we wrote it once.

That means a new product team does not start from zero. They start from "you have a database, you have a queue, you have auth, you have logging, go build the thing that is actually unique about your product."

One identity layer for everyone

Ninja is our identity and access platform. Every BOU product authenticates through it. New product? No login screen to design from scratch. No password reset flow to bug-fix. No "we forgot to add 2FA" three months in. It is just there.

This is the kind of thing that looks like an optimization until you do it. After you do it, every new product ships 4–6 weeks faster. Forever.

One UI system

Magic UI is the design system that every BOU product uses. Same components, same colour tokens, same spacing scale, same accessibility behaviour. We update it once; every product gets it.

The cost: a slight loss of per-product brand individuality. The benefit: a designer can move from working on Xtate to working on BOSS in a day, and a customer who uses two BOU products feels at home in the second one because the first one already trained them.

One static-site engine for landing pages

Every BOU product has a marketing site. We do not run a separate CMS for each. We use HAM — a small static-site engine — to compile every site, and every site shares partials for header, footer, and layout.

You are reading this on a HAM site. Xtate's site is HAM. BOSS's site is HAM. The total infrastructure cost of these marketing sites combined is about $5/month. The setup time for a new product's landing page is about a day.

The "simple stacks" thesis

The Silicon Valley template for a fast-shipping team is: hire a lot of people and give each one a tiny piece of a large machine. The BOU template is the opposite: hire a small number of people and give each one a lot of surface, but make the surface itself as simple as possible.

To do that, every layer of the stack has to be defensible by one person reading it on a Saturday. Postgres. Go services. Plain HTML with a small wrapper. A queue. A worker. That is most of it. We resist anything that adds more layers without paying for itself within six months.

Every framework you add is a vote against the next engineer who joins. Most of them lose that vote.

What we do not share

We do not share product teams. Each product has a clear owner who is responsible for the customers, the roadmap, the bugs, and the metrics. Shared infrastructure does not mean shared ownership — it means shared plumbing.

We also do not share databases across products. Each product owns its data. Ninja talks to others via API, not via JOINs. That discipline is what makes the platform actually composable.

The honest cost

Shared platforms have a real cost. When BouCloud has an issue, every product feels it. When we change a Ninja API contract, six products have to update. We have had bad days because of this. We accept that cost because the alternative — running each product on its own duplicated infrastructure — would slow us to a crawl.

If we had to choose between coordinating six teams on shared infrastructure or running six independent stacks, we would choose the coordination tax every time.

How this scales

It scales because the marginal product is cheap. The first product on this platform was expensive (we had to build the platform). The second was cheaper. The third was cheaper still. We are now at the point where a determined two-person team can stand up a new BOU product end-to-end in a quarter.

That is the unfair advantage we have spent five years building. The platform itself.

Related reading