Skip to content
Available for new work

I build web platforms — and the mobile apps that ship with them.

Fullstack engineer in Lagos. I work across the whole product — Postgres and MongoDB schemas, Node APIs, React dashboards, and React Native apps in both stores.

Currently — Fullstack Developer at E-Metric Suites

Years shipping
3+
Mobile apps
6
Production services
10+
npm packages
2

Selected work

Products people actually use

Platforms and apps built end to end — the API, the schema, the dashboard and the client you install.

About

I build the whole product — the API, the database schema, the web client and the app you install on your phone.

I'm a fullstack engineer based in Lagos. Most of what I've shipped since 2023 has been the unglamorous kind of software people actually depend on: a multi-tenant HR and performance platform, a job marketplace with real-time messaging and queued background work, a membership system handling dues, elections and events for associations, and a handful of React Native apps in the App Store and Play Store.

The web and mobile split isn't a résumé line — it's how I work day to day. A feature usually lands as a Prisma or Mongoose model, a service layer, a set of routes, a React dashboard and an Expo screen, and I'd rather own all five than hand off at the boundary and argue about the contract later.

I care a lot about the parts that don't demo well. Strict layering so business rules never leak into a controller. Every query scoped by owner, because that's the entire authorisation model. Offline-first caching so the app still works on Lagos mobile data. Semantic design tokens so dark mode isn't a bolt-on. It's slower on day one and much faster for the next two years.

How I work

  • 01

    Small files, strict layers

    Controller to service to repository, never skipped. Screens orchestrate and compose; they don't hold three hundred lines of JSX. A monolith is a decision you pay for every sprint after.

  • 02

    Typed end to end

    TypeScript in strict mode from the schema to the button, Zod at every boundary where data enters. If it compiles and the schema parses, a whole category of bug never reaches staging.

  • 03

    Built for the network people have

    Persisted query caches, optimistic writes, real offline states, and lists that stay usable on a slow connection. Assume the network fails, because for most of my users it regularly does.

  • 04

    Design systems, not screens

    Semantic tokens, a shared primitive set, one way to build a header. Consistency comes from having somewhere obvious to put things, not from discipline in review.

What I do

Three surfaces, one engineer

Most products need all three. Owning them together is faster than coordinating three people who each own one.

01

Mobile applications

Cross-platform iOS and Android apps in React Native and Expo — the real kind, with auth, payments, push notifications, offline behaviour and a store release at the end of it.

  • Expo Router, EAS builds and store submission
  • Offline-first data with persisted caches
  • Stripe, RevenueCat and in-app entitlements
  • Push notifications and deep links

02

Web platforms

Dashboards and products that hold up under real data — dense tables, live updates, charts, exports, and interfaces that stay usable on a phone.

  • React and Next.js with strict TypeScript
  • Design systems and semantic theming
  • Data-heavy tables, charts and PDF export
  • Accessibility and mobile-first layout

03

APIs and infrastructure

The service behind the screen: schema design, layered business logic, background jobs, real-time transport, and the operational tooling that keeps it maintainable.

  • Node, Express, Prisma, Mongoose
  • PostgreSQL and MongoDB schema design
  • Queues and background jobs with BullMQ
  • Multi-tenancy, auth and role models

Toolkit

What I reach for

Chosen for what they let me ship and maintain, not for what's new this quarter.

Languages

  • TypeScript
  • JavaScript
  • Python
  • SQL

Web

  • React
  • Next.js
  • Vite
  • Tailwind CSS
  • Chakra UI
  • TanStack Query
  • Zustand
  • Framer Motion

Mobile

  • React Native
  • Expo
  • Expo Router
  • NativeWind
  • Reanimated
  • EAS Build
  • RevenueCat

Backend

  • Node.js
  • Express
  • Prisma
  • Mongoose
  • Django REST
  • Zod
  • Socket.IO
  • BullMQ

Data & infrastructure

  • PostgreSQL
  • MongoDB
  • Redis
  • Docker
  • Cloudinary
  • Vercel
  • Sentry
  • Git

Experience

Where I've built

Agencies, startups and product teams — frontend first, then mobile, now the whole stack.

Work

Mar 2026 — Present

Current

Fullstack Developer

E-Metric Suites

E-Metric Suite, E-Metric Jobs and Rel8 — web, API and mobile.

Aug 2025 — Mar 2026

Frontend Developer

CompasAI

React Native client for an AI productivity assistant.

Mar 2025 — Jan 2026

Mobile Developer

Claymore Ltd.

Cross-platform application work in React Native and Expo.

Nov 2024 — Oct 2025

Fullstack Developer

Sequential Jobs

Job marketplace — Express and Prisma API, Next.js dashboard, Expo client.

Jan 2024 — Jan 2025

Frontend Developer

SustainaFinance DataNexus

2023 — 2024

Frontend Developer

Nexilistings

Sep 2023 — Oct 2023

Backend Developer, Intern

HNGx

Education

2019 — 2026

B.Ed, Social Studies

Obafemi Awolowo University

2026

CS50P — Introduction to Programming with Python

Harvard University (edX)

2023

CS50x — Introduction to Computer Science

Harvard University (edX)

Open source

Tools I built because I needed them

Small CLIs published to npm, written to solve a problem that kept recurring across projects.

@reactmode/unused-file-detector

$ npx @reactmode/unused-file-detector

Finds files whose exports are never imported, and dependencies in package.json that nothing uses. Built after one too many refactors left dead modules behind.

CLITypeScriptNode.js

@reactmode/env-check

$ npx @reactmode/env-check

Validates .env against .env.example before runtime and reports what's missing or extra — so a deploy fails on your machine rather than in production.

CLINode.jsDX

References

What people I've worked with say

Abdullah is an exceptional developer whose dedication and attention to detail ensure our products look stunning and function flawlessly. His professionalism and commitment to high-quality work make him a valuable asset to any team.

Tobi C.

Data Analyst

Abdullah was diligent and proactive in his work with me on a project. Learning a new technology wasn't a problem for him, and he is a community driver.

Favourite Jome

Customer Success Engineer, Hashnode

Questions

Before you reach out

What do you actually take on?

Whole products, or a well-defined slice of one. That usually means an API and database schema, a web client, a React Native app, or all three together. I'm most useful when I can own a feature end to end rather than hand off at the boundary between the client and the service.

Do you build mobile apps, or just responsive websites?

Genuine native apps. React Native and Expo, built for iOS and Android, with EAS builds, store submission, push notifications, in-app payments and offline behaviour. I've shipped apps for marketplaces, membership organisations, hiring platforms and AI assistants — and separate driver-side apps where the product needed one.

What does working together look like?

A short scoping conversation to agree on what's actually being built, then regular visible progress rather than a long silence and a reveal. You get working software early, deployed where you can use it, and honest reporting when something is harder than estimated.

How do you keep a codebase from rotting?

Conventions written down and enforced. Strict layering so business rules never leak into a controller, hard limits on file size so nothing becomes a monolith, TypeScript in strict mode from the schema through to the button, and validation at every boundary where data enters. Every project I run carries its conventions in the repo, so the next person — including future me — inherits the decisions instead of guessing them.

Can you take over an existing project?

Yes, and I've done it more than once — including carrying a live members portal through a full visual redesign, module by module, without a rewrite and without downtime. Inheriting a codebase means reading it and respecting the decisions already paid for before changing anything.

What happens after launch?

Maintenance and support, if you want it: fixes, dependency and SDK upgrades, store resubmissions, and new features as the product grows. Mobile especially needs someone on it — the platforms move whether or not your app does.

Available for new work

Have something you need built?

Tell me what you're working on and what it needs to do. I'll come back within two days with an honest read on scope, approach and timeline.