01 / HELLO

Mahmud Abdul Gafar

Software Engineer
Portrait of Mahmud Abdul Gafar
03 / FOCUSFull-stackShipping with quality & speed
04 / STACK
React
TypeScript
Java
Spring Boot
Node.js
Next.js
Tailwind
Git
Get to know me

About Me

Profile

I'm a versatile software engineer and founding member of Ketapay, an escrow platform securing payments for Nigerian businesses that buy and sell online. Originally trained in the sciences, I started in software in 2022 and went full product-focus in 2023, and have since taken on full product ownership, hands-on QA, and engineering leadership.

I build responsive, user-centered web and mobile products across the stack — from React and TypeScript front-ends to Java/Spring Boot services. I move fluently between writing code, reading and reasoning about unfamiliar codebases, and shaping raw ideas into clear, buildable solutions.

I'm known as a fast learner and dependable problem solver who ships reliable software in collaborative teams. When I'm not building, you'll find me playing football or basketball, exploring board games, or working on side projects.

Abuja, Nigeria[email protected]
8+
Projects Built
4+
Companies
150+
Bugs Caught Pre-Launch
4+
Years in Tech
05 / SERVICES

Work With Me

I help teams ship with confidence — testing what you've built, or building it right the first time.

Pre-Launch QA Cycle

Full manual + exploratory test pass of your web or mobile app before release: every critical flow, edge case, and fallback state, with clear reproducible bug reports in your tracker (Linear, Jira, or GitHub Issues).

150+ defects caught on a fintech escrow platform — zero reached customers.

Test Automation Setup

Playwright end-to-end suites and Postman API test collections for your core user journeys, wired to run on every deploy — so regressions get caught by machines, not users.

Frontend Builds

Responsive, production-grade web apps and marketing sites in TypeScript, React/Next.js, and Supabase — from landing page to full product MVP.

Based in Abuja · working remotely with teams worldwide.

My portfolio

Featured Projects

A selection of projects that showcase my skills in design, development, and problem-solving.

ConstructHQ

A construction-company operations platform with staff attendance and clock-in, expense approvals, project tracking, and payroll dashboards.

Next.js
TypeScript
Tailwind CSS
PostgreSQL

Watchlist

Scans food labels and explains ingredients in plain English, flagging ones worth watching — built for Nigeria.

Next.js
React
Vite
Tailwind CSS

Ketapay — Escrow Platform

An escrow platform securing payments for online transactions between Nigerian businesses.

React
TypeScript
Tailwind
Node.js

E-commerce website for wool knitting

A modern e-commerce platform for wool knitting enthusiasts, featuring product listings, custom designs, user reviews, and a community forum.

Typescript
Supabase
Node
Tailwind CSS
Case Study

Ketapay

Escrow Platform for Nigerian Payments

MVP1 shipped
Building in Public
01 / PROBLEM

The Problem

1 · funds in2 · released on confirmationBUYERESCROWSELLER

Nigerian businesses lose money to payment fraud. A buyer gets goods but doesn't pay. A seller ships products but gets scammed. We built Ketapay to secure both sides—hold the buyer's money safely until everyone confirms the transaction is complete.

02 / ROLE

What I Delivered

QA Ownership (MVP1)

Owned the full QA cycle: tested funding, holding, release, and every fallback state across TestFlight builds. Logged 150+ reproducible defects in Linear and ran a find → log → fix → verify loop with engineering. Zero of those defects reached customers.

AI-Assisted Testing Pipeline

Built an agent-driven exploratory testing workflow (Chrome DevTools MCP + Claude Code) that inspects live browser sessions — surfacing console errors, failed network requests, and UI state faster than a manual pass.

Engineering & Product

Built the public marketing site (Next.js, TypeScript, Tailwind) live at ketapay.com, and contributed to architecture decisions by mapping escrow state transitions and failure modes before code was written.

03 / INSIGHT
In fintech, the most valuable question is 'what happens if this fails?' — I asked it early enough that the answers shipped as working code, not incident reports.
04 / NOW

Where We Are Now

MVP1 is built and QA-hardened; the team is executing the launch sequence. I continue to own quality as the platform heads to market.

How I Think

These principles aren't borrowed from blogs. They come from building real things, making mistakes, and learning what actually works.

Right Tool for the Problem

I used to chase the shiniest framework. Now I ask: "What's the simplest tool that solves this?" TypeScript over JavaScript when types matter. Supabase over complex backend when I need quick iteration. Sometimes the answer is just a shell script.

Example: At OneStop, I refactored to TypeScript. At Ketapay, I stuck with what the team knew rather than introducing new tools mid-launch.

Test the User Path, Not Just the Code

A function works. But does the user know how to use it? QA for me isn't automated tests (though those matter). It's walking through the flow, clicking every button, asking "is this confusing?"

Example: Built dynamic cart logic that technically worked. Actual users got confused about persistence. Fixed the UX, not the code.

Learn Backwards from Problems

Instead of "let me learn Docker," I asked "how do I deploy this?" Instead of "let me learn system design," I drew the escrow flow and found gaps. Problems pull knowledge, not the other way around.

Example: Needed to understand JWT. Didn't read a course. Built authentication, hit errors, searched those errors, understood JWT through debugging.

Ambiguity is the Actual Job

Most of my time isn't writing code. It's understanding what to build. "Build a secure escrow system" is vague until you map out state transitions. That mapping is the hard part.

Example: Spent 2 weeks understanding escrow logic before writing a line of code. That was the most valuable 2 weeks.

The Real Story

Building Ketapay, I realized I'm not a "write perfect code" engineer. I'm a "understand the problem deeply, ask hard questions, catch things others miss" engineer. Some of my best contributions weren't lines of code—they were "wait, what happens if the payment fails here?" or "this flow is confusing, let me test it with a real person." The transition from Zoology to Software felt like I had to learn everything. Turns out, that's an advantage. I don't take for granted how things work. I dig into the "why." That's served me well in fintech where getting it wrong costs people money. I learn in public: I say when I'm wrong, and I pivot fast when I've picked the wrong tool. That habit compounds — and it's been worth more than any single framework I know.

What I work with

Skills & Technologies

01 / DAILY DRIVERS
React
TypeScript
Tailwind
Node.js
Next.js
Supabase
02 / WORKING KNOWLEDGE
Java
Spring Boot
Git
Docker
Kubernetes
Career path

Work Experience

Filter by category, or pick a role to see the full story.

Latest Update

What I'm Working On Now

Not a past achievement. What's actually happening right now.

Ketapay Launch

  • Working through final QA before launch
  • Gathering early user feedback and iterating
  • Understanding system design at scale (what if we get 10K transactions/day?)
  • Learning deployment and monitoring (the unsexy but critical part)

Learning & Growing

  • Grokking the System Design Interview (expanding mental models)
  • Fintech regulations and compliance (context for better design)
  • How to think about reliability when money is involved

Side Exploration

Exploring small automation projects and reflecting on what I've learned building

Resume

Download my full resume below.

Let's connect

Get In Touch

Have a project in mind or want to chat? Feel free to reach out — I'm always open to new opportunities and collaborations.

Your information will be stored securely and used only to respond to your inquiry.

Contact Info

Abuja, Nigeria

Follow Me