qeda-logo
BUILDER STORY

Building From Paris, Shipping for Dakar.

Distance wasn't the problem. Latency was.

Amadou Diop
Amadou DiopFull Stack Developer · NioFar, Paris (FR)
ReactFastAPIPostgreSQL
6 min read

The product worked perfectly in the browser tab Amadou had open on his desk in Paris. It was smooth, fast, and exactly what he'd spent months building. Three thousand kilometres away, in Dakar, the experience was different. Forms took seconds to respond. Pages loaded slowly enough that users had time to reconsider. The completion rate for first-time signups sat at 40% — not because the product was confusing, but because waiting had become part of using it.

NioFar started as a side project. Amadou had been working as a full-stack developer in Paris for several years when he identified a gap: small Senegalese businesses needed simple, bilingual tools for managing client invoices and payments. Nothing built for a European market quite fit. The language was wrong. The payment integrations were wrong. The onboarding assumptions were wrong. He decided to build something himself.

The technical stack he chose was straightforward: React on the frontend, FastAPI on the backend, PostgreSQL for persistence. Within a few months, he had a working product and the first paying customers. The early feedback was good — people understood the interface, the Wave integration worked as expected, and word of mouth was beginning to bring new signups. The numbers told a different story about what was actually happening.

Hosting on a European cloud provider made sense from where Amadou was sitting. It was familiar, well-documented, and geographically close to him. The problem was that his users weren't close to him — they were in Dakar, Thiès, Saint-Louis. Every API call his React frontend made to the FastAPI backend had to cross the Atlantic and come back. A form submission that felt instant in Paris took four seconds to confirm in Senegal. A page that loaded immediately in his browser took long enough to make users doubt whether it was working at all.

"The problem wasn't React. It wasn't FastAPI. It wasn't PostgreSQL. It was that the infrastructure sat thousands of kilometres away from the people who actually used the product."

The insight arrived when Amadou looked at session recordings and noticed users repeatedly clicking buttons that were waiting for a response they couldn't see. It wasn't confusion — it was doubt. The product had a latency problem that no amount of frontend optimization could solve, because the issue was physical: the servers were simply too far away from the people connecting to them.

Redeploying to infrastructure closer to his users took less time than he expected. The FastAPI backend deployed directly from Git, the PostgreSQL database was replaced by a managed instance that eliminated the backup and maintenance overhead he had been quietly absorbing each week, and the custom domain connected without any of the certificate management he had handled manually before. HTTPS was enforced by default. The Wave payment integration pointed to the same endpoints; nothing about the product logic needed to change.

What changed was what users experienced on the other end. API response times dropped from several seconds to under a second. The React frontend, which had been fast locally and slow in production, became fast everywhere. Forms that had felt unresponsive now confirmed actions immediately. First-session completion climbed from 40% to 78% — not because the product changed, but because the distance between the product and its users finally did.

Billing through Wave meant Amadou could manage infrastructure costs in the same way his users managed payments: locally, in CFA francs, without needing to route money through international systems or maintain a foreign currency account. For a solo developer building a product in Paris for people in Dakar, that alignment — same currency, same payment method, same part of the world — removed one more thing that made operating across borders feel more complicated than it needed to be.

🌍

Fun fact: Amadou found the latency problem by watching session recordings, not reading error logs. The bugs were silent — users were just quietly giving up. Moving infrastructure closer to Dakar fixed a problem no debugger would have ever surfaced.

"

I spent months optimizing a React codebase that wasn't the problem. The problem was a data center in Frankfurt serving users in Dakar. Moving the server was the only fix that mattered.

Amadou Diop
— Amadou Diop, Full Stack Developer, NioFar, Paris
"

What NioFar runs on

StackReact + FastAPI + PostgreSQL
Deploy methodGit push → auto-detect
DatabaseManaged PostgreSQL
BillingWave wallet
DomainCustom domain + auto HTTPS
Deploy the same stack
1.1sLoad timeDown from 4.2s once infrastructure sat closer to users
78%Completion rateFirst-session signups, up from 40% — same product, closer server
WaveBillingInfrastructure paid the same way his users pay

Ready to write your own story?

Join the builders across Africa who ship faster with Qeda.