Backend Engineer | System Design | Football lover • High Availability Tech breakdowns YouTube: https://t.co/ZBUQaVlTrb
May 13 • 19 tweets • 3 min read
In 2023, a Lagos fintech lost ₦4.3 million in a single night.
Not to fraud.
Not to a hack.
To a database decision, Tunde and Emeka made 18 months earlier over jollof rice and a laptop.
Here’s exactly what happened.
NB:
Purely educational, no real event.
Tunde was the backend engineer.
Emeka was the CTO.
They were building a wallet-based payment platform for market traders in Lagos.
Small team.
Big vision.
6 weeks to ship an MVP.
May 6 • 23 tweets • 5 min read
Being a "backend engineer" is not a skill.
It's a department.
Moniepoint posted roles, struggled to find qualified Nigerians, and Nigerians on the internet showed their displeasure.
But still, nobody touched the actual problem.
This thread will make some of you uncomfortable.
That's fine.
It's only a problem for people who don't read with an open mind.
First, the Moniepoint story.
They’re one of the most technically serious fintechs operating in Nigeria.
Payments infrastructure.
Real-time settlement.
High-volume transaction processing.
They rolled out job applications, and the narrative that surfaced was:
“Nigerians applied, Nigerians weren’t picked.”
But that’s not the full picture.
May 5 • 6 tweets • 1 min read
Building an auth system?
You need to be extra careful cos that thing is literally the front door to your entire application.
So implement the following
1. Rate limit your auth endpoints properly.
If you don’t, people will comfortably sit somewhere and spam login/register/reset password requests all day.
Doing that helps reduce brute force attempts, abuse and unnecessary load on your infrastructure.
Implement throttling too.
Especially on failed login attempts.
That one helps slow attackers down heavily instead of allowing unlimited guessing attempts per second.
Add account lock mechanisms after suspicious activities.
For example too many failed logins, multiple OTP failures or unusual password reset attempts.
Even if temporary, it helps stop automated attacks from continuously hammering an account.
May 2 • 20 tweets • 4 min read
Visa has an offline chip protocol.
M-Pesa works without internet.
Modern fintech wallets process payments with zero connectivity.
They're all building variations of the same architecture.
Here's how offline payment systems are actually built.
Most engineers think offline payments are just:
"Save locally, sync later."
That assumption breaks fast in production.
Offline payments are a distributed systems problem.
cryptography.
local state.
conflict resolution.
fraud prevention.
reconciliation.
all without a central authority online.
Apr 25 • 21 tweets • 6 min read
Pelumi’s startup processed ₦2.4 billion in transactions on a Friday payday.
Her servers crashed at 1:47 pm.
The painful reason: everything was synchronous.
This thread covers:
→ Synchronous vs asynchronous architecture
→ What a message queue actually is
→ Producers, consumers, and workers
→ Job retries and why they matter
→ Dead letter queues
→ The fan-out pattern
→ Idempotency in queue systems
→ Backpressure and why queues act as buffers
→ When to use queues and when not to
Read carefully. By the end, you’ll understand why every serious backend eventually adds a queue layer.
If this helps you think differently about system design, retweet and bookmark it for later reference.
Meet Pelumi.
Founder and CTO of Remitly, a Nigerian remittance platform letting diaspora send money home directly to mobile wallets and bank accounts.
On the surface, everything looks fine.
Until payday, Friday hits.
Apr 21 • 13 tweets • 2 min read
Tunde built a database in 3 hours and was proud of himself.
Two weeks later, the same database was giving him update anomalies, duplicate data, and queries that made no sense.
The problem wasn’t his code. It was his schema.
A thread on Database Normalization, bookmark for later reference and retweet
First, understand what normalization actually solves.
When your data isn’t normalized, three things break.
Insert anomaly: You can’t add data without unrelated data.
Update anomaly: Changing one thing means changing it in 50 places.
Delete anomaly: Deleting a row wipes out data you still need.
Tunde had all three and didn’t even know it.
Apr 14 • 19 tweets • 5 min read
A Nigerian fintech founder raised $2M, built a slick app, onboarded 40,000 users.
Then CBN, NDPC, and FCCPC came knocking at the same time.
He had no licence. no DPO. no KYC tier structure. no breach policy.
The company didn’t survive 2024.
Here’s every rule you must know before you build:
First, understand this:
Nigeria has no single fintech regulator.
You answer to CBN, NDPC, SEC, FCCPC, NCC, NAICOM, CAC, and FIRS, sometimes all at once, depending on what your product touches.
Most founders only know CBN.
That’s the first mistake.
Apr 13 • 11 tweets • 3 min read
The database that gaslights your users.
No errors, no alerts, no 500s.
Just a system that quietly lies to the people using it.
Retweet, bookmark then Let’s read.
Wunmi just updated her profile name on a fintech app.
She clicked save, got a success toast, and refreshed the page.
Her old name was still there.
She refreshed again, still old.
She called support. Support checked the database. The new name was there.
Nobody could explain what Wunmi saw.
Apr 11 • 16 tweets • 3 min read
A Nigerian fintech startup raised $3.2M, spent 14 months building a “bulletproof” payment platform, and launched with 40k users in week one.
Investors were celebrating.
Then in one weekend… everything collapsed.
Here’s the security blind spot that destroyed them, and the system design lessons every backend engineer in 2026 must understand.
Week one looked perfect.
“Someone drained my wallet.”
“My balance shows -₦2.8M.”
“Unauthorized transfers at 3 am”
They thought it was a bug.
It wasn’t.
Apr 11 • 6 tweets • 2 min read
Do you understand what it means to say a distributed system in system design?
In plain, simple terms, a distributed system, as the name implies, is not just one server. It is multiple machines working together as a single system.
Let me use GTBank as a very relatable example.
You do not have just one server sitting in Lagos.
There are servers in Lagos, Abuja, and possibly even outside Nigeria.
When you check your balance or send money, your request can hit any of these servers.
They coordinate, sync data, and respond as one unified system.
That is a distributed system.
Seems interesting, right? Yes, it is.
But have you ever asked questions like:
“What happens when there is a network issue?”
That is where CAP theorem comes into play.
Let’s continue 👇🏿
Now the real problem starts when network issues happen.
Welcome to CAP theorem:
Consistency: everyone sees the same data
Availability: the system always responds
Partition Tolerance: the system survives network failure
In a distributed system, network issues are not “if”, they are “when”.
Because here in Nigeria, someday, sometime, it will definitely happen.
So when a partition, which is a network failure, happens, you must choose:
Consistency or Availability.
Not both.
Apr 9 • 12 tweets • 3 min read
Every time your bank transfer fails in Nigeria, there’s a high chance it has nothing to do with your bank.
It failed because of one system.
One piece of infrastructure that every bank, fintech, and POS terminal depends on at the same time.
It’s called NIBSS.
And most engineers building Nigerian fintech don’t fully understand what it actually does
NIBSS = Nigeria Inter-Bank Settlement System.
Founded in 1993 by the CBN and commercial banks.
Simple way to think about it:
If Tunde (GTBank) sends money to Emeka (Access Bank), those banks don’t talk directly.
They both talk to NIBSS.
NIBSS is the translator, validator, and settlement engine behind every inter-bank transfer.
Without it, banks are isolated systems.
Apr 8 • 18 tweets • 5 min read
The “We’re Building for Nigerians” Lie
Let’s read.
A Nigerian startup raises $2M. The press release says “built for Nigerians, by Nigerians.”
The app requires 4G to load the dashboard. It crashes on a Tecno Spark. It times out during payment.
Meanwhile, the founders are demoing it on a MacBook Pro in a co-working space with fibre internet.
Let’s talk about this.
There are two versions of “building for Nigeria.”
The first is the pitch deck version. Inclusive language, local characters in UI illustrations, naira signs everywhere, and a founder speaking Yoruba in a TechCabal interview.
The second is what actually gets shipped.
They are rarely the same product.
Apr 3 • 16 tweets • 3 min read
So, out of boredom, I decided to break down something I built recently
not a tutorial, not a flex
Just me explaining how I approached authentication in a real system.
NB: this is not a fictional thread
This is a real system I built, just written as a thread
Read till the end
bookmark it, you’ll need it sooner or later
And if it helps, do me a favour and repost before you dive in.
The architectural diagram is at the end of the thread
Make sure you save that too
What I built had real consequences if anything went wrong.
So I couldn’t afford to treat auth as just email and password
I had to think in systems
layers, fallbacks, failure handling, and attack resistance
Apr 1 • 12 tweets • 3 min read
There’s something we don’t really talk about enough.
Nigeria is connected to some of the most powerful undersea cables ever built:
MainOne, WACS, ACE, Glo-1.
Billions of dollars of infrastructure sitting right off our coastline.
Yet most of my mutuals and I are still buying 1GB for ₦1,000, and it’s finishing in 2 hours.
Something is just so deeply wrong, and most people don’t even know where to point the finger.
It’s very easy to assume the problem is the cables, like maybe there isn’t enough international bandwidth coming in.
That’s never been the problem.
The problem starts the moment the signal leaves the water and tries to travel inland. That’s where everything collapses.
Mar 31 • 20 tweets • 8 min read
Bookmark this tweet right now.
Not after reading. Now.
At some point, you will build a payment system, work on one, or inherit one that is already broken.
When something goes wrong, and it will, you will need exactly what I am about to show you.
This is the most complete payment system breakdown I have ever written.
Every flow. Every edge case. Every trap. One thread
In 2023, I built a payment system for a marketplace.
First month: ₦127 million processed.
I was celebrating.
Then my finance person called.
“Stephen, the numbers don’t add up. There’s a ₦4.3 million discrepancy.”
No duplicate charges. No missing webhooks. No obvious bug.
Just ₦4.3 million sitting somewhere between the user’s bank and my merchant wallet.
Unaccounted for.
I aged five years that week.
Let me save you from that. 👇
Mar 23 • 12 tweets • 4 min read
A startup spent 18 months building a product for Nigeria
launched it, got press, investors were happy, the team was proud
then something happened that nobody in that office saw coming...
The first week after launch the numbers looked great
downloads were coming in, signups were going up, everyone was celebrating
then the support messages started
"the app keeps loading" "I can't submit the form" "it just shows blank screen"
the team was confused because on their end everything was working perfectly fine
Mar 21 • 8 tweets • 2 min read
A Nigerian fintech startup lost ₦47 million in one night.
Not to hackers. Not to fraud.
To one missing line of code.
Every backend dev in Nigeria needs to see this
It was 2am. Their support inbox was on fire.
Users calling, screaming, money left their wallets, nothing reached the recipient.
The on-call dev opens the logs and sees thousands of silent failures stretching back to 9pm.
No alert. No rollback. Nothing.
Mar 16 • 16 tweets • 3 min read
Two years ago, a developer I know launched a small product here in Nigeria.
Everything was going fine.
Users were signing up, logging in, and using the platform daily.
Then one morning he woke up to something strange.
Several users were complaining their accounts had been accessed… without their permission.
Kindly bookmark for yourself and retweet so others too can learn
Nothing looked wrong at first.
• Your browser asks DNS for the website’s IP address
• DNS responds with the server location
• Your browser sends a request to that server
• The server sends back HTML, CSS, and JavaScript
• Your browser renders the webpage