M. Anokwulu
Projects / curated, not exhaustive

Work, ordered by what it proves.

I have built a lot of things. Listing them flat would say “this person builds random apps.” So this page is tiered: what I am building now, the healthcare work around it, the engineering that proves I can ship, and an honest drawer of earlier experiments.

01

Flagship

Where my attention is

RxHustle

Licensing exam preparation, gamified self-study, timed CBT mock exams and a pharmacy blog, with a career mobility marketplace in build. Built for pharmacy professionals worldwide.

Role
Founder, product and engineering
Built with
Next.js · React · TypeScript · Tailwind CSS · PostgreSQL · Firebase · Paystack · Flutter
Platforms
Web & Android; iOS next
Traction
4,000+ pharmacists · 1,330+ practice questions · 5.0/5 on Google Play
Live
Exam preparation · timed CBT mocks · gamified self-study · pharmacy blog
In build
Career mobility marketplace · HealthLearn · internship prep
Reach
PCN PEP today; PEBC, GPhC, KAPS and NAPLEX next
RxHustle self-study mode Answer explanation in self-study, dark mode CBT exam simulator setup Timed exam in progress, dark mode Flagged and attempted question tracking during an exam Exam submission confirmation Exam attempt result Score breakdown graph for an exam attempt The RxHustle pharmacy blog
Scroll · self-study, the exam simulator, results and the blog
02

HealthTech & research

The healthcare thread
01 · Integrated platform

AionRx

An integrated healthcare platform: a public-facing e-pharmacy on one side, and on the other the electronic medical record and laboratory system that clinical staff actually work in.

The EMR began life as a Google Forms and Sheets quick fix, which taught me exactly what unrestricted edit permissions do to a production database when staff correct records in place. The rebuild is the version that earned the adoption.

On the laboratory side, I had relied on an audit log for accountability and watched it record a staff member amending an approved result while preventing nothing. Approved results now lock; corrections are formal amendments carrying a user, a timestamp and a reason; and notifying the patient is an explicit step rather than an assumption.

Modules
E-pharmacy (public) · EMR (staff) · LIMS (staff)
Adoption
~80% of clinic staff on the EMR
Built with
Next.js · PostgreSQL · Paystack
Architecture
Access control and input validation over a hardened data pipeline
Hard part
Governance, not features: approval locking, formal amendments, explicit patient notification
Live at
aionrx.com
AionRx public homepage E-pharmacy product catalogue E-pharmacy cart E-pharmacy checkout Electronic medical record landing screen Triage queue Triage intake form Consultation landing screen Consultation showing patient context Patient history during consultation Finalising a consultation Laboratory information management dashboard Pending laboratory requests Laboratory results entry Test catalogue management Public laboratory services page Public diagnostics page AionRx blog
Scroll · public site, e-pharmacy, EMR and LIMS · synthetic records throughout
  • ~80% adoption
  • EMR
  • LIMS
  • E-pharmacy
  • Next.js
  • PostgreSQL
02 · Pharmacy operations

Stoksenta Lite

A retail and clinical operations system for a pharmacy: point of sale with thermal receipt printing, inventory with expiry forecasting, patient records, invoicing, and the reconciliation and audit machinery a regulated business needs at close of day. Built to keep working when the internet does not.

The analytics layer is the part I would defend hardest. Fourteen endpoints answer the questions a pharmacist actually asks at the counter: what is about to expire, what is carrying no expiry date at all, what is not moving, what to reorder given observed velocity, which supplier is quietly more expensive, and where the gross margin really sits.

Choosing no framework was deliberate. The system runs on a single machine in a pharmacy that cannot assume reliable internet, and it has to be recoverable by someone who is not me.

That same constraint produced the part I am most pleased with. Between one nightly dump and the next, a day of trading exists in exactly one place: the disk in the back office. So there is a second MySQL database on another server, one-way, brought up to date every minute there is a connection and perfectly happy when there is not.

Triggers on each table queue nothing but a table name, a primary key and whether the row was written or deleted. The sync job reads that queue and fetches the current row at send time rather than a copy captured at change time, which is what makes it safe to retry and self-repairing. Triggers rather than application code because the app writes through its own helpers, through raw SQL in sixteen places, and through command-line scripts that never load a controller. A trigger sees all of them, and it fires inside the caller’s transaction, so a sale that rolls back takes its queue entry with it.

Local dumps run hourly while the shop is open, taken with --single-transaction so a backup during trading never blocks a sale. The off-site upload runs once at night, refuses to re-send a dump already recorded as sent, and fails loudly if it finds no local dump at all. Off-site targets are Cloudflare R2 and Google Drive; local disk is deliberately not among them, because a copy on the same machine is not a backup.

Role
Sole architect and developer
Built with
PHP 7.3 · MySQL / MariaDB · Tailwind CSS · PDO. No framework, by choice
Modules
POS · inventory · CRM and patient records · analytics · purchases · refunds · expenses · payments and invoices · shifts and reconciliation · staff and suppliers · internal messaging
Storage
Cloudflare R2 over the S3 API, SigV4 signed by hand, with Google Drive and local disk as fallbacks
Replication
One-way sync to a remote MySQL mirror, queued through database triggers
Backups
Hourly local dumps, nightly off-site upload, GFS rotation, alerting when a copy goes stale
Governance
Role-based permissions, full activity audit log, reference numbering
Status
In production use. Internal system, so there is no public URL or repository
Stoksenta Lite dashboard summary Point of sale, dark mode Point of sale checkout Inventory dashboard with expiry tracking Sales dashboard Analytics dashboard Customer and patient records Payments and invoices Expenses tracking Refund management Shift reconciliation Activity audit log Internal staff messaging Notifications Built-in software documentation
Scroll · POS, inventory, analytics, reconciliation and audit
  • In production
  • Pharmacy retail
  • POS
  • RBAC
  • Audit log
  • PHP · MySQL
  • Cloudflare R2
  • Replication
03 · Web platform

Pharmalister

A responsive web platform for a healthcare brand, with Google authentication, a Firestore-backed catalogue and an administrative interface.

I also built the internal systems behind it: MySQL schemas for a large and awkward product catalogue, SKU and unique identifier generation for product tracking, and the Excel VBA automation that removed the data work nobody wanted to do twice.

Role
Full-stack developer
Built with
PHP · Laravel · React · Firebase · Firestore · MySQL · Tailwind CSS
Also
Excel VBA automation, SKU generation, the INVOICE GENERATOR spreadsheet
Pharmalister web platform Pharmalister catalogue Pharmalister interface Pharmalister interface Pharmalister interface
Scroll · public site and administration
  • Firebase
  • Firestore
  • PHP / Laravel
  • MySQL
04 · Research & hackathon

FOSTOREXIA

A playable Roblox experience, and an international hackathon finalist at the IPSF World Congress in Seoul, exploring what gamification can and cannot do for the management of anorexia nervosa.

Building it inside Roblox rather than as a health app was the whole argument. The people this is aimed at are already there, every day, by choice. A standalone wellbeing app has to win that attention first and mostly does not. The harder finding was the boundary: where game mechanics stop motivating and start reinforcing exactly the behaviours you are trying to interrupt.

Written in Lua against the Roblox engine, so the levels, scoring and the end-of-run scene are all scripted behaviour rather than a storyboard.

FOSTOREXIA title screen FOSTOREXIA gameplay FOSTOREXIA level four FOSTOREXIA level twelve FOSTOREXIA end-of-run scene
Scroll · title screen through to the end scene
  • Finalist · Seoul
  • Roblox
  • Lua
  • Digital health
03

Engineering proof

Not healthcare, deliberately

This work is here to answer a fair question: does the engineering travel outside healthcare? Ceremotik is live and is the largest front-end I have built. Two of the mobile products shipped to both app stores as consumer apps, with all the latency, state and edge-case discipline that implies, and have since been delisted by their publisher, which changes nothing about the engineering.

Platform & front-end Live work
01 · Platform engineering

Ceremotik

An event management platform: ticketing, voting contests, trivia quizzes, registrations and custom forms, with a wallet and KYC flow underneath all of it. The largest front-end I have built.

Two decisions carried the architecture. Every feature is a vertical slice owning its own service, Zod schemas, query hooks and components, so a new event type is an additive folder rather than a change spread across the codebase. Trivia was built that way after voting, and it reused the whole shape: same lifecycle, same activation-fee model, same public runner.

The second is that persisted client state is encrypted at rest. Tokens and profile data go through an AES-GCM adapter on the Web Crypto API rather than sitting in plain localStorage, which matters once a wallet and KYC details are involved.

Role
Front-end architecture and build
Built with
Next.js 16 App Router · React 19 · TypeScript · Tailwind CSS v4 · framer-motion
Data layer
TanStack Query v5 · Zustand · Axios with refresh-token interceptors · react-hook-form with Zod
Surfaces
Ticketing with transfer, refund and QR · voting contests · trivia with leaderboards · registration · dynamic forms · wallet, KYC and withdrawals
Backend
Separate Node, Express and Sequelize service over a versioned REST API
Ceremotik event discovery Events filtered by country Voting contests Event creation wizard Wallet dashboard Account settings Sign in
Scroll · discovery, voting, event creation and wallet
  • Live
  • Next.js 16
  • React 19
  • TypeScript
  • TanStack Query
  • Payments & KYC
02 · Front-end challenge

Analytics Dashboard

A responsive analytics dashboard with full light and dark theming, built as a front-end engineering challenge and shipped to GitHub Pages.

The interesting constraint was theming without a framework: every surface, chart and table had to hold its contrast in both modes, driven from one set of tokens rather than two stylesheets.

Built with
HTML · CSS · JavaScript · Bootstrap · PureCounter
Notable
Light and dark theming across every component
Analytics dashboard, light mode Analytics dashboard, dark mode Dashboard data table, light mode Dashboard data table, dark mode
Scroll · both themes, dashboard and table views
  • Bootstrap
  • Theming
  • JavaScript
Full-stack builds PHP · MySQL · JavaScript
01 · Internal system

Pharma CRM

A customer relationship management system for a pharmaceutical establishment, covering the customer, order and follow-up records the business ran on.

Built with
PHP · MySQL · jQuery · AJAX · Bootstrap
Status
Private client system, so there is no public URL or repository
Pharma CRM interface Pharma CRM records view Pharma CRM interface
Scroll · records and administration
  • PHP
  • MySQL
  • jQuery · AJAX
Private
02 · AI experiment

Herc ToDo

A task application with intelligent task recommendation. An early experiment in putting a model inside a workflow rather than beside it.

The distinction it was testing still holds up. A model bolted to the side of a product is a chat box you have to remember to open. A model inside the workflow does its work where the decision already happens, which here meant ranking what to do next rather than waiting to be asked.

Built with
JavaScript · Tailwind CSS · PHP · MySQL
Status
Experiment. The demo host has since expired; the code remains
Herc ToDo task list Herc ToDo interface Herc ToDo task recommendation Herc ToDo interface Herc ToDo interface Herc ToDo interface
Scroll · task list and recommendations
  • JavaScript
  • Tailwind
  • PHP · MySQL
Published mobile products Flutter · shipped to iOS & Android
01 · Messaging

Reacher Messenger

A published cross-platform messenger. My work: a full notes module, scheduled deletion of disappearing messages via Node.js cloud functions, text undo/redo, broadcast messaging, group polls, granular privacy settings, image editing, MJML email templates, and dark/light theming end to end.

Reacher Messenger Reacher Messenger Reacher Messenger Reacher Messenger
  • Flutter
  • Dart
  • Node.js
  • Firebase

Published to Google Play and the App Store; since delisted by the publisher

02 · Social & streaming

ReachMe Social

A published social and live-streaming app. My work: live video streaming with Agora RTC, asynchronous background media compression and upload across the app, status reply and upload, and capturing text statuses as shareable images using RenderObject and RenderRepaintBoundary.

ReachMe Social ReachMe Social ReachMe Social ReachMe Social
  • Flutter
  • Agora RTC
  • GraphQL
  • AWS
  • MongoDB

Published to Google Play and the App Store; since delisted by the publisher

Other engineering work Web, data & infrastructure
01

ipsf.org & regional sites

Core PHP maintenance on the federation’s global site, plus WordPress installations, hosting and DNS across every region, as Information Technology Manager from 2021 to 2022.

2021-2022 IPSF
02

Bilingual e-commerce platform

English and French storefront with cart, pagination, categorisation and filtering, plus an admin inventory dashboard.

Private
03

Technical SEO engagements

Structured data, canonicalisation, crawl and indexation work; the discipline now applied to this site and to RxHustle.

Ongoing
04

Earlier experiments

Kept, not featured

Everything below predates the current focus. I am keeping it visible on purpose (a record of experimentation is a better signal than a suspiciously tidy history), but it is not what I am asking to be judged on.

Open the drawer: four earlier projects
01

WorkLadda

A freelancing platform for Anambra State, Nigeria, covering both digital and physical services, with discovery by service type and location.

Code
02

Troway

A waste management platform for a state agency: information distribution, levy payment and tracking, and a marketplace for recyclable items.

Code
03

The 2021-2025 developer portfolio

The previous version of this site, preserved unmodified. Small demos and experiments that are not listed above still live there.

Archive

Let us talk

HealthTech, pharmacy technology, AI in clinical workflows and health education at scale are where I go deepest, because there I understand the domain as well as the code.

The engineering above is not domain-specific, though, and neither am I. Two consumer apps on both app stores, a dashboard, a CRM, a bilingual storefront: strong product and platform teams outside healthcare are worth a conversation too.