Software Engineer — Kampala, Uganda

BUILDING SOFTWARE
THAT LASTS._

I design and build backend systems, SaaS products and enterprise applications that solve real business problems.

about

Background

I'm Enoch, a Backend Software Engineer based in Uganda.

I enjoy building software that solves real business problems. Over the past five years, I've worked on enterprise systems, SaaS platforms, payment integrations, and developer tools across education, property management, e-commerce, and business automation.

What keeps me interested in software isn't just writing code—it's understanding the problem, designing a practical solution, and building systems that are reliable, maintainable, and capable of evolving as requirements change.

Most of my experience is centered around backend engineering using PHP and Laravel, but I'm equally interested in system architecture, API design, database modelling, cloud infrastructure, and product development. I enjoy taking products from an idea to a production-ready system and continuously improving them through feedback and iteration.

Outside client work, I spend much of my time building my own products. I'm currently developing SEO Injector, a developer-first platform that simplifies SEO management for modern web applications. Building products from scratch has taught me that successful software is not only about good engineering—it also requires understanding users, prioritizing features, and making thoughtful technical trade-offs.

I believe software should be dependable, easy to maintain, and designed with longevity in mind. My goal is to build systems that create lasting value for the people and businesses that rely on them.

>currently building SEO Injector — a metadata layer that sits in front of any website.

work

Case studies

Problem, solution, architecture, and what I'd change — for each system.

Developer Infrastructure — 2026

SEO Injector

Centralized SEO metadata platform

→

Problem

Updating SEO metadata usually means a deploy — new title tags, Open Graph data, structured data, all gated behind a release cycle. On multi-tenant or legacy sites, a five-minute marketing request turns into a week of coordination.

Solution

A universal SDK sits in front of any website and rewrites metadata in the response stream itself — no source code changes required. Rules are managed centrally, billed by usage, and protected by bot detection so the layer can't be abused as a free CDN.

architecture/seo-injector.flow
Website ──▶ Universal SDK ──▶ API Gateway ──▶ Cache Layer ──▶ Metadata Engine ──▶ Database
LaravelPostgreSQLRedis CloudflareRate LimitingUsage Billing Bot Detection
What went well
Rewriting metadata in the stream, rather than buffering the full response first, kept the latency overhead small enough that customers don't notice the extra hop.
Challenges
Early onboarding logic validated every step the same way, even steps that didn't collect form data — it broke silently rather than loudly, which is worse.
If I built it again
I'd design the metadata rules schema before the onboarding UI. The UI kept getting rebuilt to match schema decisions that should have come first.
Next evolution
Support for edge providers beyond Cloudflare, and richer structured-data authoring so non-technical users can add schema.org markup without touching JSON-LD.

Enterprise ERP · Education — 2023–present

eSchool Manager

Multi-tenant school administration platform

→

Problem

Most schools run admissions, fees, and academic records across paper files and spreadsheets. Parents applying to several schools fill out the same information every time.

Solution

A multi-tenant ERP covering admissions, fee collection, and academic records for individual schools, plus a public marketplace where a parent fills out one application and sends it to several schools at once. An Arabic curriculum module later extended it to Islamic schools.

architecture/eschool.flow
Students ──▶ REST API ──▶ Business Layer ──▶ Database
PHP / LaravelREST APIRBAC Multi-tenantMySQL
What went well
Keeping tenants isolated at the data layer from day one meant onboarding a new school never risked another school's records.
Challenges
Every school runs admissions slightly differently. Building one core product flexible enough for that, without turning every feature into a settings toggle, took longer than the original build.
If I built it again
I'd build the applications marketplace before the school-side admin tools — it turned out to be what parents actually wanted first.
Next evolution
Deeper academic analytics for administrators, and more localized curriculum modules beyond Arabic.

Property SaaS · Cross-border E-commerce — 2022–present

eRental & StockAuto

Property management SaaS and international e-commerce infrastructure

→

Problem

Two different products, one shared constraint: distributed teams and customers operating across borders, currencies and languages, with no single payment gateway covering all of them.

Solution

eRental manages listings, tenants, leases and rent collection for property managers. StockAuto runs multilingual storefronts with payment orchestration across multiple gateways — including local mobile money rails like Pesapal and Yo Payment — so a transaction routes to whichever gateway actually works for that customer's currency and country.

architecture/erental-stockauto.flow
Customer ──▶ Storefront ──▶ Payment Orchestrator ──▶ Gateway (Pesapal / Yo / Card) ──▶ Ledger
LaravelMulti-currencyPayment Orchestration i18nMobile Money
What went well
Treating payment gateways as interchangeable providers behind one orchestration layer made adding a new gateway a config change, not a rewrite.
Challenges
Multilingual support got retrofitted onto a codebase that assumed English-only strings in a few too many places.
If I built it again
Separate the i18n layer on day one, even if only one language ships at launch.
Next evolution
Wider regional payment gateway coverage and consolidated multi-currency reporting across both products.

architecture

System flows

Two systems, two very different traffic patterns.

01

SEO Injector — request path

architecture/seo-injector.flow
Request ──▶ Edge Cache ──▶ Metadata Service ──▶ Database

Every hop between the SDK and the database is stateless and horizontally scalable — the cache layer is what keeps p95 latency flat under load.

02

eSchool Manager — request path

architecture/eschool.flow
Students ──▶ REST API ──▶ Business Layer ──▶ Database

Tenant scoping happens at the business layer, not the database layer, which keeps a single schema serving every school.

journal

Engineering journal

Long-form write-ups on the systems above. Publishing here as they're ready.

Building a Multi-Tenant SaaS in Laravel

What tenant isolation actually costs at the database layer, and when it's worth paying for.

draft

Designing Usage-Based Billing

Metering, grace periods, and the edge cases that break a billing system on day one.

draft

What I Learned Building ERP Systems

Three ERPs later — the parts of "enterprise software" that are actually hard, and the parts that just look hard.

draft

Caching Strategies for High-Traffic APIs

Where caching helps, and where it just moves the bug somewhere harder to find.

draft

Payment Gateway Integration Lessons

Notes from wiring up Pesapal, Yo Payment, and mobile money rails that don't behave like Stripe.

draft

timeline

Engineering Journey

2022 · Building Foundations

Junior Developer

My engineering journey began by building internal automation tools—from IT asset tracking to workflow management. This early experience taught me that great software starts with understanding real-world operational problems.

September 2023 – August 2024 · Building International Products

Full Stack Developer

At Vibrica Solutions, I worked on StockAuto, an international automotive e-commerce platform for the Korean market. Collaborating with a distributed engineering team across Vietnam, I built backend and frontend systems, integrated payment gateways, implemented multilingual support, and added AI-driven customer service features—broadening my experience in internationalization and cross-border team collaboration.

September 2024 – Present · Enterprise Software & SaaS Platforms

Software Engineer

At Halvek Technologies, I lead the development of enterprise SaaS platforms—including eSchool Admission, eSchool Manager, eRental Manager, eBusiness Manager, and the AUUS Digital System. Beyond core application development, my work spans database and system architecture, payment integrations, production deployments, and mentoring junior engineers to maintain high architectural standards across long-term, scalable products.

2025 · Engineering Beyond Features

Software Engineer

Growth shifted my focus from delivering features to system design. Today, I prioritize API design, database modeling, caching, security, and performance. Every architectural decision is guided by technical trade-offs, maintainability, and building systems that remain reliable as they scale.

2026 · Building Developer Platforms

Lead Engineer

SEO Injector represents the convergence of my engineering work: multi-tenant architecture, REST APIs, intelligent caching, and developer tooling built into a centralized metadata engine. It brings together technical architecture, usage analytics, and product strategy to simplify SEO management for modern web applications.

contact

Get in touch

Best reached by email. Based in Kampala, Uganda, and open to working with distributed teams.