Available for remote work
I build custom WordPress plugins
// your site has 47 plugins. I can fix that.
Production systems and the internal tools that run them, custom plugins instead of plugin sprawl, payment and API integrations, and admin dashboards non-technical teams can actually operate without calling a developer.
Nine years of client work. Abuja, Nigeria (UTC+1), full overlap with Europe, mornings and afternoons with US Eastern.
Live client sites I designed, built and still maintain, with the custom plugins and themes behind them. All links go to the real thing.
A subscription commerce and publishing platform carried entirely by one custom WordPress plugin I wrote from scratch, plus a theme built specifically for it. Elementor handles public pages only; the plugin drives everything else, and programmatically controls both Elementor and Formidable Forms.
Full site plus a Resources plugin now serving 59 publications across an 11-country programme. One plugin replaced four: it registers its own custom post type and fields in place of ACF, exposes itself as a custom Elementor widget so editors compose pages normally, and owns its query, filtering and pagination, which is why it survives Elementor updates and shifting post IDs. Every resource auto-generates its type badge, View and Download actions, and share links for eight platforms on publish.
Full site for a global nonprofit working across human, animal, plant and environmental health. Its news archive ran on three or four stacked filter plugins; I replaced them with one I wrote, Year, Category and keyword filtering, available as both a shortcode and an Elementor widget, owning its own query, results and pagination.
Digital verification and market platform for sustainable agriculture across Africa, with three distinct audience paths, farmers seeking verification, buyers sourcing ethically, and partners or investors, plus a professional directory and framework pages. Includes a custom plugin handling structured data collection and custom post types, so submitted records become manageable content rather than form entries.
Corporate site for the ventures and innovation arm, technologies, corporate advisory and an entrepreneurship programme, built so the team maintains it themselves.
Code you can actually read, not screenshots you have to trust. Four public repositories, all GPL.
Buy Now and a one page checkout, with Paystack and Flutterwave collected in a modal instead of a redirect. The interesting part is what happens after the widget says "paid": the browser is not believed. The server checks the reference against the one it issued for that order, then calls the gateway API with the secret key to confirm status, currency and amount before anything is marked complete.
Handles the things that are easy to get wrong: Paystack quotes NGN in kobo, so a subunit amount compared against a major unit total passes for anything over one naira. References are bound to their order so a valid one cannot be replayed against another. Flutterwave settlement is net of fees, so comparing against it would reject every real payment.
A filterable library of downloadable documents. One plugin instead of a custom post type plugin, a custom fields plugin, a filter plugin and a search plugin all owning a piece of the query and none owning the whole thing. Type and subject are taxonomies rather than a hardcoded list, so the vocabulary belongs to whoever installs it. No jQuery, cards built with createElement, assets loaded only where the shortcode runs.
An AJAX archive filter with search, year, and a parent taxonomy select that reveals a child select on demand. Works with any post type and any hierarchical taxonomy. It owns its own WP_Query rather than reaching into a page builder's markup to swap results, which is why it keeps working when the builder updates.
A lightweight, security conscious eCommerce plugin for WordPress, built as a free alternative to WooCommerce plus its paid extensions. One page checkout, a pluggable payment gateway architecture, Stripe PaymentIntents with signed idempotent webhooks, an abandoned order cron that restocks stale orders, signed expiring download tokens, multi currency and per zone shipping.
Single purpose solutions from client work. A recurring event date engine that handles the rules events plugins cannot express, like "the last day of the month if it is a Saturday, otherwise the first Saturday of the next month". And a way to point a theme's existing hamburger at your own menu panel without forking the theme.
Syncs clipboard, notes and files between phone and computer, because emailing yourself a link is not a workflow.
What I reach for, and what I've shipped with.
I work on staging before production, document what I changed, and send short written progress updates by default. I take ownership of a codebase end to end, schema, API, interface and deployment.
Django Girls mentor since the first Ogbomoso workshop in 2016; Abuja chapter through 2022.