Engineering · Backend

Backend Engineering — Distributed Systems & Microservices

Backend work is the other side of the platform coin. Over the last five years that has meant microservices that talk to each other through events, ETL pipelines that move millions of rows between systems, idempotent APIs that survive retries, and the operational scaffolding — observability, CI/CD, regression safeguards — that keeps everything running while features land. The patterns are the same ones I bake into the platform layer itself: contracts at the boundary, GitOps for delivery, observable by default. Most of that work has been in TypeScript and Node.js, with meaningful slices in Java and Rascal MPL when the problem called for it. The systems have shipped across fintech, edutech, and agritech, and the patterns travel.

What I build

Microservices & integrations

At Lybertine I drive full-stack development across the microservice fleet — version-control integrations with GitHub and GitLab, CI/CD pipelines, and the databases underneath. The discipline is not the framework; it is the contracts. Services expose narrow, versioned APIs, integration tests live at the service boundary, and a backwards-incompatible change has to surface in CI before it surfaces at runtime.

Event-driven & serverless

At Upfirst I implemented AI-assisted workflows that let customers configure agents to run user-defined actions. The system is serverless on GCP, event-driven, and instrumented end to end so that issues surface through observability rather than support tickets. Idempotency keys and dead-letter queues do the quiet work of keeping the system honest under load.

ETL & data movement

At Dedukt I built ETL pipelines that migrated loan data into a Loan Origination System, and at Periteleios I shipped automated data transformation pipelines for both on-premise and cloud data systems, including SQL-dialect compilers in Rascal MPL. Moving data correctly is mostly about being honest about failure modes — partial failures, duplicate deliveries, schema drift — rather than chasing throughput.

APIs & documentation

Every system I have shipped came with the documentation and onboarding materials needed for the next engineer to extend it without paging me at 3am. Engineering docs are not a deliverable tacked onto the end of a sprint — they are how the team scales past the person who built the thing.

Selected work

03 case studies

Bankvole

Bankvole is a client-built banking platform covering the surface area you would expect of a real consumer fintech: account creation, balances, transfers, transaction history, and the operational tooling needed to keep it running. The work spanned product UX, account flows, and the money-movement primitives that sit underneath them.

SeekMake

SeekMake is a SaaS for manufacturers that consolidates the business operations side of the shop: invoicing, customer relationships, and product timeline tracking, all in one place. The goal was a single workspace where manufacturers can quote, invoice, follow up, and track production progress without context-switching between three or four tools.

Crop2Cash

Crop2Cash is an agritech marketplace that helps smallholder farmers in Nigeria source seeds, fertilizers, and other agricultural inputs. The work was on the backend side: APIs that drive the marketplace surface, the chart endpoints that let operators see what is actually moving through the platform, and a programming model that made integrating with the existing services much less painful than it had been.

Stack

The stack changes per project, but the spine is consistent: a typed language, a framework that does not get in the way, a database that I trust, and the messaging layer that the architecture actually needs — not the one that looked good on a slide.

Languages
PythonBashTypeScriptGoJavaNode.js
Containers & orchestration
KubernetesDockerDocker ComposeEKSGKEHelm
IaC & provisioning
TerraformTerragruntAnsibleHelmGitOps
Messaging & data
KafkaRabbitMQSQSPostgreSQLMongoDBRedisMySQL

How I think about backend work

Reliability first

Regression safeguards, expanded test coverage, and acceptance-criteria validation aren't a phase — they're the contract. The system stays stable while features land.

Test what matters

From SQL-dialect compilers to API contracts to Terraform plans, tests guard the boundaries that fail loudly. Coverage is a means, not the goal.

Maintainability over cleverness

The best system is the one the next person can extend. Boring, predictable code beats a clever abstraction every time.

Talk about a backend project← Back to home