ENGINEERING DIGITAL SYSTEMS

Surf

What we've built, and how.

We document our work the same way we do everything else — honestly. Here are the problems we saw, the choices we made, and what shipped.

SaaS · Operations

Qliina

A laundry management SaaS built for African operators.

Outcomes
  • First paying business: April 2024
  • Multi-branch support added Q3 2024
  • Active development ongoing
Nuxt 3Node.jsPostgreSQLPaystackVercel
View product page →
The problem

Nigerian laundry businesses were running entirely on WhatsApp, paper receipts, and verbal agreements. Operators had no visibility into pending orders, unpaid invoices, or inventory. Customers had no way to track their clothes.

Why it was hard

Most off-the-shelf laundry software is built for the US and Europe. It assumes high literacy, stable connectivity, and a single shop owner running the business. None of that holds in our market.

Our approach

We ran discovery with 6 laundromat owners across Port Harcourt and Lagos. The insight: operators needed a dead-simple interface they could hand to shop assistants with minimal training. We built for low-literacy usage, offline-tolerant flows, and local payment rails (Paystack). First sketch to public beta in 11 months.

The engineering

Built on Nuxt 3 with a Node.js API layer and PostgreSQL. The offline-tolerance strategy was the hardest part: we cache order state in IndexedDB and reconcile on reconnect. Paystack webhooks drive the payment flow, with a manual reconciliation fallback when the network is down.

What shipped

First paying business live April 2024. Multi-branch chains now use Qliina for booking, billing, and operations. Ongoing active development.

The lesson

Don't design for the median. Build for the assistant who has never used a computer, on a phone with intermittent data, in a shop with one power socket. That person is the real user.

Fintech · Gifting Infrastructure

Quiika

A verified gifting and payout platform for Africa.

Outcomes
  • Bank payouts live across Nigeria
  • OpenAPI spec published
  • Real-time webhook notifications
Nuxt 4Node.jsPostgreSQLPaystackVercel
View product page →
The problem

Gift-giving in Africa is a deeply social activity — but digital gifting was either tied to specific retailers or relied on trust-based informal systems (send money via WhatsApp, hope they buy the right thing). There was no verified gifting layer that paid out directly to a bank account.

Why it was hard

Trust is the whole product. A gift platform that loses a payout or ships the wrong amount doesn't recover. We had to assume every endpoint is adversarial and every transaction is a hostile environment.

Our approach

We designed Quiika as infrastructure: an API-first gifting rail that any business or individual could plug into. Recipients claim their gift and receive an instant bank payout via Paystack. We built verification, fraud protection, and webhook notifications from day one — because trust is the whole product.

The engineering

Nuxt 4 frontend, Node.js service layer, PostgreSQL. The payout flow is idempotent at every step: every claim request has a client-side dedupe key, and the Paystack API is wrapped in a state machine that retries safely. Webhooks are signed and verified. The OpenAPI spec is the contract every integration depends on.

What shipped

Live at quiika.com. OpenAPI spec published. Paystack bank payouts live across Nigeria. Developer-friendly endpoints for business integrations.

The lesson

In fintech, your state machine is your product. A gift is just a state that flows through enough transitions to be safe to pay out. Build the transitions first, then the UI.

"We do client work too — we just can't always write it up."

Most of our client engagements are under NDA. If you'd like references or a portfolio review, reach out directly — we'll share what we're allowed to.

Request a portfolio review →

Have something important to build?

You don't need to have everything figured out before talking to us.

Tell us what you're trying to accomplish, what's getting in the way, and where you want to go. We'll help you figure out what comes next.