Running infra for 23M+ pageviews/mo at Punch Nigeria (Punch Newspaper)

John Edeh

|

I ship SaaS products end to end — architecture, backend, frontend, and the infrastructure they run on.

23M+
Pageviews/Mo
7
SaaS Shipped
15min
Outage Fixed
bash — john@edeh-prod:~
❯~/john-portfolio
Scroll

I fix production, then I build the next thing.

Mechanical engineering graduate turned production infrastructure and SaaS builder — I run the servers and write the code that runs on them.

John Chinonso Edeh is a Full-Stack and DevOps Engineer in Lagos, Nigeria.

He runs production infrastructure for The Punch Nigeria Ltd, the country's largest news publisher — a self-managed Docker / Nginx / PHP-FPM / MySQL / Redis stack on AWS serving 23M+ pageviews a month. Recent work: root-caused a full-site 504 outage down to a memory-limit conflict between two unrelated commits and fixed it live in 15 minutes; found and closed a reflected XSS vulnerability; cut editor publish latency from 40+ seconds to normal by tracing three blocking calls through New Relic; stopped a 15,000-request sitemap-scraper stampede that was taking the site down nightly.

In parallel he ships his own products end to end — architecture, backend, frontend, and the infrastructure they run on. Multi-tenant SaaS with dual deployment modes, marketplace platforms with real-time negotiation and FIFO cost engines, e-commerce with live Stripe payments. Production systems used by real businesses, not tutorials.

23M+
Monthly Pageviews Managed
7
SaaS Products Shipped Solo
5+
Years Experience
15min
504 Outage: Diagnosed & Fixed

Available for collaborations

Looking for a DevOps-savvy Full-Stack engineer?

Let's Talk

Featured Work.

A selection of production-grade platforms where I've managed the complete lifecycle — from database schema to cloud deployment.

~/apoquiz

$ deploy --project apoquiz

HTTP/2 200 OK

SAAS
Next.jsReactTailwind CSSNestJSSocket.IO+9

Apoquiz

Ran the Bible Giant 2026 final live: 567 audience, 105 questions, 88 min, LAN or internet

$ Ran the Bible Giant 2026 final live: 5 teams, 4 rounds, 105 questions and 567 audience members over 88 minutes, with final standings and per-round scores recorded by the platform.

~/xfinance

$ deploy --project xfinance

HTTP/2 200 OK

SAAS
NestJSNext.jsPostgreSQLPrismaRedis+6

XFinance

Multi-Tenant Finance & Accounting SaaS

$ Dual deployment architecture — DEPLOYMENT_MODE=saas enables full multi-tenancy with subdomain routing and super admin; standalone mode bypasses subscription gates for single-client on-premise deployments

~/insights-connector

$ deploy --project insights-connector

HTTP/2 200 OK

SAAS
Next.js 16React 19Tailwind CSS 4TypeScript (strict)MCP SDK (Streamable HTTP)+11

Insights Connector

Hosted MCP server that lets AI assistants read GA4 and Search Console, read-only, per user

$ 9 read-only MCP tools (4 GA4, 4 Search Console, 1 account) behind a single wrapper: auth, entitlement, rate limit, Google token, call, error mapping, usage log. No tool can bypass it, so every call is enforced and audited identically.

~/maville-laptop-search

$ deploy --project maville-laptop-search

HTTP/2 200 OK

MARKETPLACE
Next.js 16React 19TypeScriptTailwind CSSFramer Motion+10

Maville Laptop Search

Intent-aware laptop search: a 16GB query returns 23 more usable options across 112 laptops

$ On real inventory a 16GB search went from 77 results to 77 exact + 23 upgradeable laptops, ranked after exact matches and labelled "8GB -> 16GB" or "ask us" when the maximum RAM is not recorded. I chose to surface upgrade paths rather than pad results, so the label never promises what the data cannot back.

~/fondlyheld

$ deploy --project fondlyheld

HTTP/2 200 OK

SAAS
Next.js 16 (App Router, ISR)React 19Tailwind CSS v4Motionreact-hook-form + Zod+7

Fondly Held

Group cards and tribute pages: 10 occasions from one Board model, zero-signup contributing

$ 12 tables and 5 additive migrations, 10 occasion types x 3 themes seeded as rows: one Board model with tone as data (celebratory / warm / solemn), so a new occasion is an insert, not a deploy, and memorial boards cannot receive confetti by construction.

~/recurring-billing

$ deploy --project recurring-billing

BUILD IN PROGRESS

SAAS
Next.js 16React 19TypeScriptTailwind CSSshadcn/ui+10

Recurring Billing Platform

Naira recurring-billing engine on Paystack: auto-debit, invoicing, dunning and payout splits

$ 12 tables with uniqueness constraints as the idempotency backbone (one invoice per client per period, unique payment references, unique webhook event keys): duplicate webhooks, cron re-runs and concurrent callers cannot double-settle.

~/place-of-treasure

$ deploy --project place-of-treasure

HTTP/2 200 OK

ECOMMERCE
Next.js 16React 19TypeScriptPrismaPostgreSQL+8

Place of Treasure

Gift Shop E-Commerce with Configurable Gift Box Builder

$ GiftBoxItem join model — products composed into configurable gift box products with item selection constraints; purpose-built data model for the gift shop use case

~/xportal

$ deploy --project xportal

HTTP/2 200 OK

MANAGEMENT
NestJSNext.jsPostgreSQLPrismaTypeScript+1

XPortal

School Management System for Nigerian Schools

$ Multi-tenant architecture — a single deployment serves multiple schools with fully isolated data per school

~/maville-diagnostics

$ deploy --project maville-diagnostics

HTTP/2 200 OK

DESKTOP
PythonPyQt6WMIPowerShellOpenCV+4

Maville Diagnostics Suite

Portable Windows Desktop App for Laptop Inspection & Grading

$ All hardware queries run on QThread workers — the UI never blocks during WMI/PowerShell interrogation; failed queries return N/A gracefully with no crashes

~/upl

$ deploy --project upl

BUILD IN PROGRESS

MANAGEMENT
Next.js 15React 19TypeScriptTailwind CSS v4TanStack Query+6

UPL League Admin

Football league back-office on Firebase: denormalized data model and validated Excel fixture import

$ 11 Firestore collections and 18 routes: modelled teams and leagues as many-to-many by copying team and player documents into league-scoped league_teams / league_players collections, because Firestore has no joins and each league needs its own independent standings.

Technical Arsenal.

Specialised in the modern cloud-native ecosystem — from backend architecture and real-time systems to automated DevOps pipelines.

Cloud & Infrastructure

Production infrastructure management across major cloud platforms

AWS EC2AWS S3AWS RDSAWS CloudFrontAWS CloudWatchAWS IAMAWS WAFAWS LambdaCloudflareAzureGCPVercelNeon DB

CI/CD & DevOps

Pipeline engineering, containerisation, and deployment automation

GitHub ActionsDockerDocker ComposeJenkinsAzure DevOpsWatchtowerGHCRNginxLinux / UbuntuTerraformBash ScriptingTurborepo

Monitoring & Observability

Production observability across logs, metrics, and alerts

AWS CloudWatchGrafanaPrometheusDatadogNginx LogsLogrotate

Backend

API design, real-time systems, and server-side architecture

NestJSNode.jsExpressFastAPITypeScriptPythonSocket.IOBullMQPrismaREST API DesignJWT / OAuthNextAuth.js

Frontend

Full-stack React applications with modern tooling

Next.jsReactTailwind CSSshadcn/uiTypeScriptFramer MotionZustandTanStack QueryFabric.js

Databases & Storage

Relational and document databases, caching, and object storage

PostgreSQLMongoDBMySQLRedisUpstash RedisCloudinaryAWS S3

The Journey.

A track record of engineering reliability and shipping full-stack products for high-traffic media and enterprise SaaS.

Nov 2024 – Present

Full Stack Web Developer

The Punch Nigeria Ltd·Lagos, Nigeria
AWSDockerNginxRedisCloudWatchPHPWordPressCloudflareLinux
  • ▸Root-caused and fixed a full-site 504 outage (23M pageviews/month) live over SSH in ~15 minutes — traced a host load average of 150 to pool-specific memory starvation via vmstat/docker stats, found two unrelated commits weeks apart silently conflicting on a memory ceiling, hotfixed production, and shipped the permanent fix to CI. Load average 150→23, container memory 5.97GiB→801MB, verified end-to-end
  • ▸Ran a live, data-driven PHP-FPM tuning campaign after New Relic showed host CPU pinned at 84–99.6% for 24h+: diagnosed 12.5x worker oversubscription, cut it, then re-tuned against live /fpm-status data after the first cut proved too aggressive for real traffic
  • ▸Cut editor publish latency from 36–45s (worst case 89s) to normal by tracing three independent blocking calls through New Relic — a synchronous 10s webhook call, a third-party plugin's 70s-timeout publish call, and an unindexed database query feeding an unused admin autocomplete
  • ▸Root-caused and fixed a cascading four-bug production outage chain, each fix unmasking the next, measured live via error-rate percentages — one bug alone was hitting 99.98% of tag-archive page requests
  • ▸Resolved a nightly sitemap-scraper stampede (15,000+ 504s, 2-hour outage windows) traced via RDS query analysis to a distributed scraper hitting 1,100+ sitemap files from 1,100+ rotating IPs — shipped nginx concurrency caps and file caching; zero 504s in the affected window afterward
  • ▸Found and fixed a reflected XSS vulnerability in production PHP code, and installed the AWS CloudWatch Agent with a custom IAM role for real-time metric alerting via SNS
  • ▸Diagnosed a mobile-carrier proxy silently injecting content into unencrypted HTTP traffic, hardened TLS (removed legacy 1.0/1.1), and configured Cloudflare WAF rules to restrict /wp-json/ traffic
Jun 2023 – Aug 2024

Front-end / DevOps Engineer

MHAPY·Ontario, Canada (Remote)
AWSJenkinsGitHub ActionsReactEC2S3CloudFront
  • ▸Managed multi-domain AWS infrastructure for mhapy.com, portal.mhapy.com, and mhapy.ca — a mental health SaaS platform serving live users across Canada
  • ▸Deployed and maintained web applications on AWS including EC2, S3, and CloudFront — configuration, cache invalidation, and environment-specific deployments
  • ▸Designed and maintained CI/CD pipelines using Jenkins and GitHub Actions, reducing manual deployment steps and accelerating release cadence
  • ▸Built and maintained the therapists' dashboard (portal.mhapy.com) — a React-based platform integrated with a Ruby backend mental health chatbot
Aug 2023 – Oct 2023

DevOps Engineer

NEWTONCORE·Nigeria
AWSCI/CDDockerReact
  • ▸Managed cloud infrastructure ensuring platform uptime and deployment consistency across environments
  • ▸Designed and implemented CI/CD pipelines automating build, test, and deployment workflows on AWS
  • ▸Deployed and maintained web applications on Amazon Web Services
Mar 2024 – Jul 2024

Front-end Developer

Style Terrain·Nigeria
ReactNext.jsPaystackTypeScript
  • ▸Built responsive web interfaces and integrated Paystack payment gateway into the e-commerce platform
  • ▸Delivered pixel-accurate implementations from Figma designs using React and Tailwind CSS

Get In Touch.

Available for full-time roles and high-impact contract projects. Let's build something that matters.

Direct Email

Best for formal inquiries and collaboration requests.

Lagos, Nigeria — working with teams worldwide