Software engineer · Nyeri, Kenya

I write the systems hospitals and hotels run on.

Patient records, room nights, M-Pesa, student attachments — the unglamorous work that cannot fail at 7am on a Monday.

Most of my time is backend architecture and APIs, with interfaces that still hold up when the front desk is busy. I care about the people who depend on the software, not the demo.

Harrison Muhoro, software engineer in Kenya
Harrison Muhoro, photographed in Kenya
Selected work

Two systems that had to work in the real place, not only in a repo.

01 Hospital management

Afya HMS

One system for front desk, clinic, pharmacy, lab, and admin — so patient flow and billing are no longer a paper chase.

The problem

Staff were juggling paper files, spreadsheets, and verbal handoffs. Billing errors were common, queues were invisible, and nobody had a single picture of the hospital.

What I built

Afya HMS gives each role clear permissions and a live view of patients and money. It is built as a Laravel 11 modular monolith with a React/TypeScript PWA, MySQL, Redis, and live updates across branches.

What changed

Designed for 1,000–10,000+ concurrent users across branches. Duplicate entry goes away; administrators can see operations as they happen.

I chose a modular monolith over microservices because healthcare workflows are deeply connected. Splitting them early would have made the system harder to audit and harder to keep.

Laravel 11 · PHP 8.3 · React 18 · TypeScript · MySQL 8 · Redis · M-Pesa · PWA

02 Hotel operations

Taara HMS

Reservations, housekeeping, restaurant POS, and M-Pesa on one desk — including the reconciliation that used to live in a bank SMS thread.

The problem

Hotel teams ran the property in separate tools. Payments arrived as messages. End-of-day finance was a manual pile-up.

What I built

Taara HMS is a Laravel 11 server-rendered app with Blade, TypeScript/Vite, Daraja STK Push and C2B, and queued PDF/CSV exports. It stays usable on old POS terminals, tablets, and phones.

What changed

Automatic M-Pesa matching, audit trails on financial changes, and rate limits that protect staff accounts from abuse.

I kept it server-rendered instead of a full SPA because hotel staff work on mixed, often old hardware. The app has to load there, not only on a developer laptop.

Laravel 11 · PHP 8.3 · Blade · TypeScript · MySQL 8 · M-Pesa Daraja

Tools I use

A working stack, not a shopping list.

Backend
PHP 8.3, Laravel 11, Node.js, REST APIs
Frontend
React 18, TypeScript, Blade, HTML, CSS
Mobile
Progressive Web Apps, phones first
Data
MySQL 8, Redis, PostgreSQL
Cloud
Azure, Docker, CI/CD, Nginx
Tools
Git, GitHub, VS Code, Postman, WAMP
On the desk

What I am building now

  • In development

    InduTrack KE

    An industrial attachment portal for Kenya: six roles, tamper-locked digital logbooks, and queued PDF certificates.

    Laravel 11 · React · Vite · MySQL

  • Ongoing

    Afya HMS — v2

    Clearer billing, better EMR screens, and role-based audit trails for multi-branch reporting.

    Laravel 11 · React 18 · MySQL

Learning

Certificates

  • 2023 Responsive Web Design freeCodeCamp
  • 2024 Back End Development and APIs freeCodeCamp
  • In progress Microsoft Azure Fundamentals (AZ-900) Microsoft
About

From Nyeri, building for places that still run on paper.

I'm Harrison. I got into this because I kept watching hospitals, hotels, government desks, and universities lose time to problems software could actually fix. So I started fixing them.

I work mostly in PHP and Laravel on the server, React and TypeScript in the browser. I like code that is predictable six months later, when somebody else has to change it at 11pm.

On my own time I am building InduTrack KE, because I lived through Kenya's industrial attachment process and it was a mess of paper logbooks and guesswork.

More about me

Contact

If you have a system that has to hold up, write.

Roles, contracts, or a messy operational problem — I will answer with a clear next step, usually within a weekday.