Skip to content

Backend & DevOps Engineer

I build and run systems that stay correct when things fail.

Payments, payroll, ledgers, deployment pipelines, monitoring. I work inside an engineering team, own what I ship end to end, and build my own products to solve problems I keep running into.

Lagos, Nigeria. Available for remote and relocation.

35%
less downtime, after the team stopped hearing about outages from its own customers.
99.9%
uptime, sustained across 3+ production applications.
10 minutes
to ship a release, down from hours. Same-day hotfixes became possible.
Days to hours
faster lead response, after scattered enquiries became one record.

About

The short version

Software engineer with over four years designing and shipping production systems in TypeScript, PHP, Python and .NET. I start from the problem rather than the ticket: a marine operations platform keeping many interdependent domains consistent, a construction cost system that makes overruns visible before they are expensive, a payroll engine where one wrong field means an employee is paid incorrectly.

I have delivered software for four companies across analytics, HR, education and marine operations, and independently designed, built and launched four commercial products under ShotNub Solutions, including a multi-tenant billing platform serving three products on an append-only double-entry ledger.

Location
Lagos, Nigeria
Email
emmanuelmbagwu77@gmail.com
Languages
English
Availability
Remote & relocation
Download CV
Emmanuel Mbagwu

Selected work

Problems, and what I built for them

Screenshot of AppliTrack: AI job application platformLIVE

AppliTrack: AI job application platform

Live, real users · Sole engineer

Job seekers rewrite the same resume for every application. Hours of reformatting, with no way to track what they applied to or reuse past work. Freelancers have the same problem, plus per-brief instructions that get missed.

Read the full write-up

A platform that takes a profile and a job description and returns a tailored, ATS-optimised resume, cover letter, proposal or outreach email in seconds.

GPT-4o with structured outputs so responses are schema-valid rather than free-form text. A multi-hundred-line prompt system with truthfulness guardrails so the model reframes real experience instead of inventing metrics or employers.

Server-side PDF rendering across five templates. A similarity engine scoring new job descriptions against prior generations and reusing relevant output instead of re-calling the model, cutting inference cost on repeats.

Credit balances with atomic rollback, added after a failed generation left a user a credit short.

Security: JWT with refresh-token rotation and reuse detection, rate limiting, bot protection, HMAC-signed single-use short-TTL download URLs.

Note: Payment gateway is on test keys and not live. Users are on free credits.

NestJS · TypeScript · MongoDB · OpenAI GPT-4o · Next.js · Puppeteer

Screenshot of SpendNub: rule-based financial ledger engineLIVE

SpendNub: rule-based financial ledger engine

Live · Sole engineer

Budgeting tools reset every month and lose unspent funds, so users never know what is actually available per category.

Read the full write-up

Splits income into budget categories on the 50/30/20 model or custom rules.

Double-entry ledger where every transaction writes an entry and every deletion triggers an automatic atomic reversal through transaction linkage, so balances always reconstruct from the entries beneath them.

Atomic MongoDB $inc operations for all balance updates, so data is always consistent rather than eventually consistent.

Cron-driven month-end job carrying unspent balances forward as sinking funds. Burn-rate forecasting.

Three-tier subscription with trial, expiry and a guard that soft-locks excess buckets on downgrade.

NestJS · TypeScript · MongoDB · Cron

Screenshot of Kobo & Cents: stock research platformIN DEVELOPMENT

Kobo & Cents: stock research platform

In development, building in public · Sole engineer

Researching a stock means opening a chart site, a fundamentals site and a news site that rarely agree and never share a page. Nothing built for Nigerian retail investors covers both the NGX and US markets with real per-stock research, and the local apps that come closest are brokers first, with research bolted on.

Read the full write-up

A research-only tool with a hard no-trading line: no order placement and no broker integration anywhere in the product, on purpose.

Account and email-verification flow where sign-up succeeds but login stays blocked until the address is verified, plus password change and reset for locked-out users.

Market overview that groups NGX and US stocks into performing well, worth a closer look, and underperforming, each with current price and percentage move.

Per-stock detail pages with the fundamentals that actually explain company health, and an explainability panel that shows the factors behind a score rather than just the number. Inline plain-language glossary for terms like P/E and liquidity.

A track-only portfolio that separates stocks you are watching from stocks you own elsewhere, entered by hand. No buy or sell action exists.

Favorites lists exportable as a public link that anyone can open on the web without an account, with rate limiting on link creation to keep it from becoming a scraping vector.

I am publishing every product and architecture decision as I make it. Two posts are already up: on naming a money product that is deliberately not fintech, and on scrapping the earlier screener build before writing any frontend code.

Note: Repo is public; the README has not caught up with the current local build yet.

Python · FastAPI · PostgreSQL · Redis · Next.js · Docker

Architecture sketch for Billing Service: multi-tenant payments platformIN DEVELOPMENT

Billing Service: multi-tenant payments platform

In development · Sole engineer

Three products each needed payments, but a Nigerian Paystack business account requires its own CAC registration and corporate bank account, so separate accounts were impossible. Integrating Paystack three times would have meant three inconsistently-correct implementations of the hard parts and no single source of truth for revenue.

Read the full write-up

One billing system, one Paystack integration, one ledger. Tenant isolation at the application layer through API-key-scoped tenancy over shared tables.

Append-only double-entry ledger covering both money and prepaid credit, with balanced-entry invariants enforced in code and integer minor units so rounding cannot corrupt a balance.

Persist-then-process webhook pipeline with signature verification, deduplication and mandatory provider re-verification before entitlement. Idempotency keys and a transactional outbox for at-most-once side effects under retries.

A self-managed subscription engine built from Paystack's charge-authorization primitive with custom dunning, downgrade-and-recovery and card-update flows.

A fail-open availability strategy backstopped by a daily reconciliation job that auto-corrects missed webhooks and escalates everything else. Admin dashboard for financial monitoring, forced retries, goodwill actions and audit-logged operator actions.

Process: decision register, ADRs for every one-way-door choice, data model, API contract and risk register written before implementation code.

.NET · PostgreSQL · React/TypeScript · Docker · Paystack

Architecture sketch for Texlaunch: self-hosted Platform-as-a-ServiceIN DEVELOPMENT

Texlaunch: self-hosted Platform-as-a-Service

In development, public repo · Sole engineer

Deploying a small app means either paying for Railway or Render, or wiring up build, registry, orchestration, routing and TLS by hand every time.

Read the full write-up

Submit a Git URL or ZIP and get a running app at a live subdomain. A NestJS API creates the deployment record and returns immediately, then runs the pipeline async so nothing blocks on a request timeout.

AWS CodeBuild clones the repo, auto-detects the runtime and builds an image into ECR. The image is registered as an ECS Fargate task definition and run in a private subnet, with an ALB target group and listener rule created so it is reachable at deploy-<id>.shotnubsolutions.com.

Every log line streams back to the browser over Server-Sent Events, replaying persisted lines first so a reconnecting client can scroll back. Teardown runs in reverse using ARNs stored on the deployment record.

Nine Terraform modules (VPC, IAM, ECR, S3, RDS, Route53, ALB, CodeBuild, ECS) with remote state in S3 and DynamoDB locking. RDS is private-subnet-only, encrypted at rest, reachable only from the backend security group.

Design decisions: SSE over WebSockets because log streaming is one-directional. Lazy AWS SDK imports so the app boots on a laptop with no credentials. A full local simulation mode that exercises the entire API surface without AWS.

NestJS · TypeScript · PostgreSQL · TypeORM · Terraform · AWS (CodeBuild, ECS Fargate, ALB, RDS, ECR, Route53) · Docker

More, including public repositories, ongithub.com/lilstex.

Experience

Where I have done it

  1. DevOps Engineer · DPAnalytic Solutions

    April 2024 to present

    Lagos, Nigeria · Remote

    • Engineered BONGSERP, a marine operations platform spanning asset management, inventory, procurement, health and safety and crew accommodation. Designed the data model so many interdependent modules stay consistent as records change across the system.
    • Own authentication, RBAC, team management, payment integration, and deployment and monitoring for PersonalBuildManager, used by real estate developers and investors to track construction progress, schedules and cost.
    • Built PersonalBuildManager's material tracking and cost reporting modules, turning transaction-level data into a shared view of spend against plan.
    • Design and maintain REST APIs in NestJS and TypeScript alongside Laravel services, integrating internal systems and third-party providers.
    • Consolidated leads, demo requests and consultation enquiries from spreadsheets and separate product sites into an internal CRM, cutting response time from days to hours.
    • Implemented proactive monitoring and alerting, reducing downtime by 35%.
    • Fixed a silent billing failure: a client's card failed on renewal, three retries exhausted, no escalation to anyone. Added escalation on exhausted retries and completed monitoring around the billing flow.

    NestJS · TypeScript · Laravel · PHP · MySQL · Azure · Docker · GitHub Actions · Nginx · Linux

  2. Software Engineer · Payraty

    October 2025 to May 2026

    Remote

    • Built and maintained REST APIs across the payroll calculation engine, employee management and LMS modules for 7 enterprise clients, inside an engineering team under a team lead, alongside product and QA.
    • Worked on the payroll calculation engine, the highest-stakes component, where one miscalculated field means someone is paid the wrong amount.
    • Integrated AWS S3 for sensitive HR documents with access-controlled retrieval.
    • Managed deployment on AWS EC2 via Bitbucket Pipelines, delivering zero-downtime releases affecting 3,000 employees.
    • Ran product demos and training for enterprise buyers, relaying recurring client friction back to engineering as scoped work.

    Laravel · PHP · MySQL · AWS EC2 · AWS S3 · Bitbucket Pipelines

  3. DevOps Engineer (Contract) · ALKADEMY

    January to June 2026

    Remote

    • Owned deployment and reliability for 3+ production applications on DigitalOcean, sustaining 99.9% uptime.
    • Replaced a manual release process with GitHub Actions CI/CD, cutting release time from hours to under 10 minutes and enabling same-day hotfixes.
    • Established monitoring and incident response where none existed.
    • Eliminated configuration drift through standardised provisioning and security hardening: open ports, outdated packages, permissive SSH.

    DigitalOcean · GitHub Actions · Docker · Nginx · Ubuntu · Bash

  4. Backend Engineer · Bleautech

    2022 to March 2025

    Remote

    • Built backend services in Node.js, Express and MongoDB, including automated grading systems and payroll integrations that replaced manual internal processes.
    • Profiled and optimised API endpoints and MongoDB queries, improving response times under load.
    • Introduced observability tooling that reduced unplanned downtime.
    • Containerised services with Docker for dev/prod parity.

    Node.js · Express · MongoDB · Docker

Skills

The tools I reach for

These are the tools I reach for. Which one depends on the problem: I chose .NET for a system where correctness mattered most, Python for data ingestion, and NestJS for everything that had to ship fast.

Backend

Node.js · Express · NestJS · TypeScript · JavaScript (ES6+) · PHP · Laravel · Python · FastAPI · C# / .NET · REST API design · Swagger / OpenAPI

Transactional & Financial Systems

Double-entry ledgers · Payment verification · Reconciliation jobs · Wallet and credit balances · Retry, dunning and escalation · Idempotency keys · Transactional outbox · At-most-once side effects · Integer minor-unit arithmetic

Databases

PostgreSQL · MongoDB · MySQL · Redis · Mongoose · TypeORM · Prisma · Eloquent · Schema and index design · Query optimisation · Data migration and consolidation

Infrastructure as Code

Terraform (modules, remote S3 state, DynamoDB locking) · VPC and subnet design · Security groups · IAM roles and instance profiles · Route53 · Reproducible provisioning

DevOps & CI/CD

Docker · Docker Compose · Jenkins · GitHub Actions · Bitbucket Pipelines · Multi-stage builds · Container registries (ECR, Docker Hub) · Zero-downtime releases · Automated backups · Server hardening · Linux administration · Nginx

AWS

EC2 · S3 · ECS Fargate · ECR · RDS · ALB · CodeBuild · CloudWatch Logs · IAM · Route53 · Secrets Manager · Also Azure (App Services, Blob Storage) and DigitalOcean

Streaming & Async

Server-Sent Events (log streaming with replay and reconnect) · Async job pipelines · Event emitters and in-process pub/sub · Background and scheduled jobs

Reliability

Monitoring and alerting · Incident response · Production support · Performance profiling · Failure analysis

Security

JWT with refresh-token rotation · Token reuse detection · RBAC · Rate limiting · Bot protection · HMAC-signed single-use URLs · Access-controlled document storage

AI & LLM

OpenAI API (GPT-4o) · Structured outputs · Prompt-system design · Similarity scoring and response reuse · AI-assisted development (Claude, Cursor)

Practice

Architecture decision records · Decision and risk registers · API contracts · Agile delivery · Code review · Technical documentation · Git and Bitbucket

Contact

If a system in your business is losing money, time or visibility, I would like to hear about it.

Lagos, Nigeria (UTC+1). Available for remote and relocation.