Hello, I am Emmanuel.

Backend engineer with 3+ years designing distributed systems that stay up when things go wrong. I specialise in event-driven architectures — CQRS, event sourcing, and reliable message pipelines — using Java, NestJS, and Laravel on AWS. If your service loses data, sends duplicate charges, or falls over under load, that is the kind of problem I exist to solve.

About

I am a backend software engineer with over three years of professional experience building and running production systems at scale. My work spans e-commerce platforms, school administration systems, and event-driven integrations — all sharing a common thread: services that need to be reliable, observable, and easy for teams to reason about under pressure.

I specialise in Java and Spring Boot for high-throughput services and reach for NestJS or Laravel when a TypeScript or PHP ecosystem better fits the team or domain. I have hands-on experience designing CQRS and event-sourced systems with Axon Framework, building message pipelines with Kafka, and deploying containerised workloads on AWS with Docker and Kubernetes. Observability is not an afterthought in my work — Prometheus and Grafana dashboards are part of the definition of done.

My engineering philosophy is straightforward: complexity should be earned, not inherited. I default to simple, boring solutions and introduce architectural patterns only when the problem genuinely demands it. I write code that my future self — or a teammate who has never seen the repo — can understand at 2 AM during an incident.

Skills

Languages

Java
Java
TypeScript
TypeScript
Node.js
Node.js

Frameworks

Spring Boot
Spring Boot
Laravel
Laravel
NestJS
NestJS

Infrastructure

AWS
AWS
Docker
Docker
Kubernetes
Kubernetes
Kafka
Kafka

Databases & Caching

MySQL
MySQL
MongoDB
MongoDB
Redis
Redis

CI/CD & Observability

GitHub Actions
GitHub Actions
Prometheus
Prometheus
Grafana
Grafana

Featured Projects

CQRS ES Shop

An event-sourced e-commerce backend built with the CQRS pattern in Java and Spring Boot, using Axon Framework to maintain strict separation between the write model (commands) and read model (projections). Each state change is stored as an immutable event, providing a full audit trail and enabling temporal queries without touching live data. The explicit command and query buses make it easy to scale reads and writes independently as load grows. In hindsight I would introduce a dedicated projection-rebuild pipeline earlier — replaying a large event store at startup taught me that lesson the hard way.

JavaSpring BootCQRSEvent SourcingAxon

Webhook Inbox Relay

A Laravel service that receives incoming webhooks from third-party providers, verifies HMAC signatures, and reliably relays payloads to downstream services with configurable retry logic. Built to solve the problem of payload loss during downstream outages — events are queued and retried with exponential back-off until acknowledgement or a configurable dead-letter threshold is reached. HMAC verification runs before any business logic touches the payload, ensuring unverified requests never reach the application layer. Next on the roadmap is per-source rate limiting and an admin dashboard for inspecting the dead-letter queue.

LaravelQueuesHMACRetryAPI

School Management Software

A multi-module school administration platform built with NestJS, TypeScript, and MongoDB, covering academic records, timetabling, attendance, and staff management in a single cohesive API. Role-based access control is enforced at the route level using custom NestJS guards, ensuring strict permission boundaries between students, teachers, and administrators with zero shared code paths. The modular architecture means each domain (academics, HR, timetabling) can be developed and deployed independently as the platform grows. If I were starting over I would extract the notification module into a separate micro-service from day one to avoid tight coupling during high-volume term events.

TypeScriptNestJSMongoDBRBACREST

Contact

Send me a quick message and I'll get back to you.