I build cloud-native platforms and AI systems, and lead the teams that ship both.

I'm Cornelius Okeke, a senior full-stack engineer, who builds both cloud-native platforms and the AI systems running on top of them, including this site's own MCP server, designed and shipped to AWS Lambda. 7+ years building SaaS products across healthcare, fintech, automotive retail, and education, on Node.js, TypeScript, React and Angular. I own features the whole way: architecture, APIs, interface, deployment, and the monitoring that catches it at 3am.

Cornelius Okeke, a senior full-stack engineer, photographed in three-quarter profile against a plain backdrop
Years building production software
7+Years building production software
Full-stack developer to lead, in five years
Promoted 2xFull-stack developer to lead, in five years
Industries shipped in: health, finance, automotive, education
4Industries shipped in: health, finance, automotive, education
Selected work

Four systems, and what made each one hard.

I'd rather go deep on a few projects than skim many. Each one is here because the interesting part was a decision, not a technology. All four are live.

01 · 2023 - Present

Coventi.app

A cloud-native video streaming platform with live-stream chat and its own admin portal. I co-founded it and built it end to end.

Co-founder

Architecture, backend, frontend, and infrastructure

Co-founder / Lead Full-Stack Developer

The problem

Video streaming is hard to build with a small team. Live and on-demand delivery needs infrastructure you don't want to run yourself. Viewers expect live chat that keeps up with the stream. Subscriptions have to be charged in the currency people expect, not one exchange rate for everyone. And the people running the platform need an admin portal that's a proper application, not a settings page bolted onto the main site. Getting all of that working across two clouds is what decides whether a two-person team can run this.

Decisions that mattered

  1. I integrated a third-party video streaming service for both live and on-demand delivery instead of running streaming servers myself. A small team should rent that kind of infrastructure, especially before there's revenue.

  2. Live-stream chat runs on WebSockets, separate from the REST API that handles everything else, so chat speed doesn't depend on a request and response cycle built for ordinary CRUD.

  3. Payments pick the currency and gateway automatically from the visitor's timezone. Nigerian users pay in Naira through Flutterwave or Paystack, and everyone else pays in US dollars through Stripe. The app and the API agree on that choice, so the price shown is the price charged.

  4. The admin portal is its own React and Vite app, deployed separately to Azure App Service, instead of a route inside the main Next.js site. The people running the platform get a tool built for their job, and it ships on its own schedule.

  5. Sign-in uses NextAuth.js and JWT across the Next.js site, the admin portal, and the backend API, so there's one way of handling sessions instead of three.

  6. Email goes through Amazon SES, with IAM permissions limited to SES only, even though the rest of the platform runs on Azure. SES is the right tool for deliverability, and the limited permissions can't reach anything else in the account. Azure Application Insights covers the backend and CloudWatch tracks email delivery, so a bounce shows up alongside everything else in production.

Outcome

Live at coventi.app. The backend API and admin portal run on Azure App Service with MongoDB as the database, and media lives in Azure Blob Storage and ImageKit. Code and deployments run through Azure DevOps, and Application Insights and CloudWatch cover monitoring across both clouds.

  • TypeScript
  • Next.js
  • React
  • Vite
  • NestJS
  • Node.js
  • NextAuth.js
  • JWT
  • MongoDB
  • WebSockets
  • Azure App Service
  • Azure Blob Storage
  • ImageKit
  • Azure DevOps
  • Azure Application Insights
  • Amazon SES
  • AWS IAM
  • CloudWatch
  • Tailwind CSS
  • Stripe
  • Paystack
  • Flutterwave

02 · 2021 - Present

Four products, four industries

Automotive retail, healthcare, education, and fintech SaaS at Exquis App Factory. I joined as a full-stack developer, was promoted to senior, then to lead.

Promoted 2x

Full-stack developer to lead, across five years

Full-Stack → Senior Full-Stack → Lead Full-Stack Developer · Exquis App Factory

Products

  • Dealer management SaaS (DMS, 15k+ customers)
  • Medical EMR
  • University portal (45k+ students)
  • Fintech platform

The problem

Working across four industries in one company is a different problem from going deep in one. The compliance rules, the data model, and the cost of a bug change completely from product to product. An EMR's audit trail has nothing in common with a dealer system syncing inventory for more than 15,000 subscribed dealerships. A university portal serving more than 45,000 students has seasonal load that fintech never sees. And money has to reconcile. Architecture, permissions, and delivery habits carry across all four. Everything else has to be spotted early, before it gets built the wrong way.

Decisions that mattered

  1. I drew service boundaries so teams could ship independently: event-driven services on NestJS and Express, deployed across Cloud Run and AWS Lambda, with API contracts agreed up front instead of discovered during integration.

  2. I treated permissions as part of the design from the start, not something bolted on afterwards. Role-based access control runs on Passport.js, AWS Cognito, and Google Cloud IAM, so what someone can do is decided from their identity at the boundary. With clinical records and financial data, that's a requirement, not a feature.

  3. I built a shared set of frontend components and backend libraries, so a new product starts from working building blocks instead of a copied repository. Four products on one team only works if the common parts are genuinely common.

  4. I moved infrastructure into code with AWS CDK and automated the path to production with GitHub Actions, GitLab CI/CD, and Azure DevOps. CloudWatch and Google Cloud Logging catch problems before customers report them.

  5. Code review, written architecture notes, and mentoring are how standards stay consistent across four products and a distributed team. At that size you can't hold consistency in one person's head.

  6. I built an MCP (Model Context Protocol) server at Exquis, which turned the AI direction into something shipped instead of a policy document.

Outcome

I was promoted twice in five years, from full-stack developer to senior to lead. That's the clearest sign the work held up, because it's someone else's judgement, not mine. I now own features across their whole lifecycle and set technical direction across the products. That includes bringing in AI-assisted development with a review rule attached: every generated change is read for correctness, security, and maintainability before it ships. It produced working software, not just guidelines, including that MCP server.

  • Node.js
  • TypeScript
  • NestJS
  • React
  • Angular
  • GraphQL
  • AWS Lambda
  • AWS CDK
  • CloudWatch
  • MCP (Model Context Protocol)
  • Cloud Run
  • DynamoDB
  • PostgreSQL
  • GitHub Actions
  • Jest
  • Playwright

03 · 2020 - 2021

Surebanka

A fintech platform I built at Transolve Technologies, where a bug costs more than downtime.

Fintech

Financial services, where correctness is the requirement

Full-Stack Developer · Transolve Technologies

The problem

Financial software fails differently from most products. A slow page is annoying. A wrong balance, a permission that's too broad, or a transaction recorded twice is a regulatory problem. That changes what you optimise for: you trade some speed of delivery for isolation, clear contracts, and tests.

Decisions that mattered

  1. I helped build a microservices architecture, mainly for fault isolation, so a failure in one financial workflow slows that workflow down instead of taking the platform with it.

  2. I designed and documented API contracts in Swagger/OpenAPI before integration. That made connecting securely to internal and third-party financial systems predictable instead of a negotiation.

  3. Authentication, authorisation, and role-based access control around sensitive financial data were design constraints from day one, not a hardening pass at the end.

  4. I designed the MongoDB data models for integrity first and query speed second. In financial records, a schema that allows an inconsistent state is a bug waiting for the right sequence of writes.

  5. Unit, integration, and automated tests ran through Azure DevOps pipelines, so deploying to a production financial system was routine instead of an event.

Outcome

I shipped secure, scalable features into production at surebanka.com, across React and Angular frontends and NestJS services on Azure, GCP, and AWS. It also gave me the habits around contracts, isolation, and testing that I've carried into every system since.

  • Node.js
  • NestJS
  • Express.js
  • TypeScript
  • React
  • Angular
  • RxJS
  • MongoDB
  • Microsoft Azure
  • Azure DevOps
  • Swagger / OpenAPI

04 · 2026 - Present

Matech Innovations

A repairs, sales, and trade-in platform for a phone and gadget business in Opebi, Lagos. I designed and built it on my own, and it is live in production.

Solo build

Architecture, frontend, and delivery pipeline, one developer, now live

Freelance Full-Stack Developer · Matech Innovations Limited

Products

  • Phone & gadget repairs
  • Smartphone & device sales
  • Device trade-in / swap
  • Genuine accessories

The problem

A local repair and retail business needs a website that does three different jobs at once. It has to sell devices and accessories from live stock. It has to put a real number on a used phone's trade-in value before the customer walks in. And it has to get people talking straight away, on WhatsApp, because that's how this business actually talks to customers, not email. None of those is hard alone. Getting all three right in one small app, built and maintained by one person and fast on a phone, is what makes it more than a template site.

Decisions that mattered

  1. I built the trade-in flow as a real valuation model instead of a "contact us for a quote" page. It only accepts models the shop will swap: iPhone X through the 17 series, Galaxy S10 onward (including Fold and Flip, but not the A series), iPad 6th generation onward, MacBooks from 2018, and Pixel 6 Pro onward. It asks the questions that actually move the price: cosmetic grade, battery health, carrier lock, SIM type, repair and part-replacement history, and biometrics. Then it works out an estimate in the browser from the model's age, tier, storage, and condition, added up across every device the customer lists. The questions change by device type, so nobody with a MacBook is asked about a SIM.

  2. The catalogue comes from a live AWS API Gateway endpoint instead of being baked into the build, so the business can change stock without a redeploy. The site doesn't trust that data blindly: it drops products that are unavailable or incomplete, falls back to a category image when a product has no photo, and shows twenty at a time with search, category, and condition filters.

  3. WhatsApp is the enquiry channel, so I didn't build a contact backend. A floating widget, built with Angular 22 Signal Forms, writes a pre-filled message with the site's signature and opens WhatsApp directly. That matches how the shop already talks to customers, and there's no server to run for enquiries.

  4. Discover is a reel-style feed that mixes devices with repair and trade-in services. It uses scroll-snap slides, an IntersectionObserver to track the active one, and a matchMedia switch between vertical paging on phones and horizontal paging from 768px up. Scrolling or swiping past the last slide loops back to the first.

  5. I treated accessibility as a requirement, not a polish pass, with WCAG AA and AXE as the bar written into the project. There's a skip link, proper landmarks, focus moved into every dialog and returned on close, Escape to close, scroll locked behind modals, live regions for state changes, and a dark mode that follows the system setting, remembers your choice, and never flashes on load.

  6. Deployment runs through a GitHub Actions pipeline. Pushing to a deploy branch builds the app, publishes it to S3, and invalidates CloudFront, signing in with GitHub OIDC and an assumed IAM role instead of long-lived AWS keys. Google Analytics only runs on the production hostname, so previews and local runs never skew the numbers.

Outcome

Live at matechinnovation.com, served from S3 through CloudFront on a Route 53 domain with an ACM certificate. Customers can browse live stock, get a trade-in price, and message the shop on WhatsApp, all in one app, with TikTok and Instagram posts embedded on the home page. It runs on Angular 22 with lazy-loaded routes and signal-based state, Tailwind CSS 4, and Vitest specs on the components and services. I designed, built, and maintain it on my own, with AI coding assistants speeding up implementation and every change reviewed by hand before it ships.

  • Angular 22 (Signals)
  • Angular Signal Forms
  • TypeScript
  • Tailwind CSS 4
  • Vitest
  • @incloodsolutions/toolkit
  • AWS API Gateway
  • S3
  • CloudFront
  • Route 53
  • AWS Certificate Manager
  • AWS IAM (OIDC)
  • GitHub Actions
  • Google Analytics 4
  • WhatsApp click-to-chat
  • TikTok and Instagram embeds
Experience

Freelance web developer to lead, in seven years.

Listed in full, because the slope matters more than any single line of it.

  1. Sep 2021 - Present

    Exquis App Factory

    Promoted x2Current

    Full-Stack DeveloperSenior Full-Stack DeveloperLead Full-Stack DeveloperTexas, US · Remote

    Built and led four products across four industries: automotive retail, healthcare, education, and fintech. I also built an MCP (Model Context Protocol) server there. Promoted twice in five years.

  2. Feb 2023 - Present

    Coventi.app

    Current

    Co-founder, Lead Full-Stack DeveloperLagos, Nigeria · Remote

    Co-founded a video streaming platform and built it end to end: the Azure and AWS infrastructure, the frontend, the admin portal, and live-stream chat.

  3. Jul 2020 - Aug 2021

    Transolve Technologies

    Full-Stack DeveloperLagos, Nigeria · Remote

    Built secure fintech features on microservices across Azure, GCP, and AWS, with documented API contracts and automated deployment pipelines.

  4. Oct 2019 - Mar 2020

    Leviticus Lab

    Junior Angular DeveloperLagos, Nigeria

    Built the frontend of a financial auditing app in Angular: dashboards, charts, and the filters auditors actually needed.

  5. Feb 2019 - Aug 2019

    Complustech

    Web Development TraineeLagos, Nigeria

    A software development traineeship covering programming fundamentals, web development, and version control.

  6. Feb 2016 - Jan 2019

    Upwork & Fiverr

    Freelance Web DeveloperRemote

    Built and maintained websites for small businesses, handling requirements, delivery, and revisions directly with clients.

Capabilities

What I reach for, and why.

A list of technologies doesn't say much, because everyone lists the same ones. The sentence under each group is the part worth reading.

Backend & Architecture

I draw service boundaries so teams can ship without waiting on each other, and I design contracts that hold up when the product changes direction.

  • Node.js
  • TypeScript
  • NestJS
  • Express.js
  • REST APIs
  • OpenAPI / Swagger
  • GraphQL
  • WebSockets (real-time chat)
  • Microservices
  • Event-Driven Architecture
  • Scheduled jobs (cron)
  • Multi-tenant SaaS
  • Authentication (JWT, OAuth, Passport.js, NextAuth.js)
  • RBAC & IAM
  • Payments and webhooks (Stripe, Paystack, Flutterwave)
  • Rate limiting and API hardening
  • Caching
  • System Design
  • Rust (Actix, Axum, Tokio)

AI Systems

I build the parts of a product that run on a language model, and I make them reliable enough to ship. That means MCP servers, tool and retrieval interfaces, prompt design, and the monitoring around them. The MCP server behind this site is one of them, running in production on AWS Lambda.

  • MCP servers (design, build & deploy)
  • LLM feature integration
  • Tool & function calling
  • Prompt engineering
  • RAG / retrieval (LangChain)
  • OpenAI
  • Anthropic Claude
  • Google Gemini
  • AWS Bedrock
  • Azure AI Foundry
  • AI-assisted development

Frontend & Cross-platform

I build interfaces that work on the slowest phone on a bad connection, then make them feel smooth everywhere else.

  • React
  • Next.js
  • React Native
  • Angular 22 (Signals, Signal Forms)
  • TypeScript
  • Tailwind CSS
  • Vite
  • React Router
  • RxJS
  • NgRx
  • Redux
  • Zustand
  • React Hook Form
  • Accessibility (WCAG AA)
  • SEO (Open Graph, JSON-LD)
  • PWA
  • Electron
  • Ionic & Capacitor

Cloud, DevOps & Data

I've run production on three clouds, kept infrastructure in code, and set up monitoring that catches problems before customers do.

  • AWS (Lambda, API Gateway, DynamoDB, S3, CloudFront, Route 53, ACM, SES, IAM, SQS, SNS, CDK)
  • Google Cloud (Cloud Run, Storage, IAM, Secret Manager)
  • Microsoft Azure (App Service, Blob Storage, Application Insights)
  • Serverless
  • GitHub Actions (OIDC to AWS)
  • GitLab CI/CD
  • Azure DevOps (repos, YAML pipelines)
  • Monorepos (Turborepo, npm workspaces)
  • ImageKit
  • PostgreSQL
  • MongoDB (Mongoose)
  • DynamoDB
  • MS SQL Server
  • Jest
  • Vitest
  • Supertest
  • Playwright
  • Cypress
Built, not claimed

Two of these you don’t have to take my word for: a server that’s running, and packages you can install.

MCP Server

Live now

This portfolio runs on its own MCP (Model Context Protocol) server. I designed it, built it, and deployed it to AWS Lambda. Claude, ChatGPT, and other AI assistants can call its typed tools to read my real projects, work history, skills, and published packages directly, instead of scraping a page written for people. Building it is the same kind of work as connecting a language model to any product's data.

  • NestJS
  • TypeScript
  • AWS CloudFormation
  • AWS Lambda
  • AWS IAM
  • API Gateway
  • AWS CDK
  • CloudWatch

Connect an MCP client

https://mcp.okekecornelius.com
About

How I got here, and what I'm looking for next.

I build software that has to keep working after launch day. Most of my seven years went into the parts nobody screenshots: a data model that survives the next pricing change, a service that doesn't drop messages under load, an API contract that lets two teams ship without a meeting. I own features from the architecture to the monitoring in production, and I lead the engineers who do the same.

I got here sideways. I studied Business Administration at the University of Lagos and built websites for small businesses on Upwork and Fiverr from 2016. In 2019 I did a development traineeship, then started as a junior frontend developer building Angular dashboards for financial auditors. I joined Exquis as a full-stack developer in 2021 and was promoted twice in the next five years, first to senior and then to lead. Alongside that, I co-founded a streaming platform. The business degree left me with a habit I've kept: I ask what a system is actually for before I ask how to build it.

What I care about now is building AI systems, not just using them. The MCP server behind this site is one: I designed it, built it, and shipped it to AWS Lambda, so AI assistants can read my real data through typed tools instead of scraping a web page. I bring the same habits to the model features I build inside other products: typed interfaces, real monitoring, and code review that AI-written code has to pass like anyone else's. I'd like to work on a team where both the platform underneath and the intelligence on top have to be right.

Education
B.Sc. Business Administration, University of Lagos (2024)
Certification
Web Development Certification, Complustech (2019)
Based in
Lagos, Nigeria (UTC+1), available working in US and EU timezones
Currently
Lead Full-Stack Developer at Exquis App Factory · Co-founder at Coventi.app
Activity

What the commit graph says.

A year of GitHub contributions, pulled live. Most weeks here are small fixes and Tuesday-afternoon refactors, not launches, which is a fair picture of what the job actually is.

LessMore
Contact

Let's talk about what you're building.

The fastest way to reach me is email. I reply to everything that isn't automated, usually within a day. If you're hiring, tell me about the problem you're trying to solve rather than the stack, and I'll tell you honestly whether I'm the right person for it.

I'm based in Nigeria and I've worked remotely with a US-based team since 2021, so working across time zones isn't new to me.

NigeriaOpen to senior, staff, and lead roles: remote or hybrid