Hi Dev.to 👋
I'm Jonathan, 16, from Bauchi, Nigeria. Self-taught developer. This is my first real product.
The Problem I'm Solving
Fake bank transfer receipts are destroying Nigerian small businesses.
A buyer sends a screenshot of a "successful transfer" — it looks 100% real. The vendor ships the goods. The money never lands. The vendor loses the goods AND the money, with zero recourse.
I've seen one of these fake receipts myself. If a vendor wasn't paying attention, they'd be scammed in 5 seconds.
What I Built
NaijaStack — a free business automation tool for Nigerian SMEs.
Key features:
- AI Fake Transfer Detector — scans payment receipts (OPay, PalmPay, Moniepoint, GTBank, etc.) and flags fakes: edited fonts, wrong session IDs, doctored amounts
- AI Magic Fill — type "Emeka bought 2 shirts for 15k" and the form fills itself
- Order tracking — New → In Progress → Ready → Paid
- Stock management — auto-decrements when you sell
- Expense tracker + 7-day P&L dashboard
- WhatsApp receipts, reminders, and rider dispatch
- AI Business Assistant — ask "how much profit did I make this week?" and get a real answer
Tech Stack
- Vanilla JS (no framework)
- Firebase Firestore + Auth
- Google Gemini API via Netlify Functions (API key never exposed)
- PWA (installable, works offline)
- Hosted on Netlify
What I Learned Building This
- Structure over features. My first version had nested event listeners that duplicated orders. Lesson: keep functions clean.
- Security is not optional. I moved my Gemini API key to a Netlify Function after realizing it was exposed in the browser.
- Small details matter. Toasts, skeleton loaders, an onboarding tour — these took 10% of the time and made a 90% difference in feel.
What I Need Help With
- Security — I'm learning this as I go. Any tips on Firestore rules or API safety?
- AI prompt engineering — how would you improve the fake receipt detection?
- Getting my first users — I have zero. Advice welcome.
Try It
It's free during beta, no card:
https://naijastack.netlify.app
Feedback welcome — good or bad. I'd rather know what's broken than ship something mediocre.
— Jonathan
Top comments (0)