About

I build backend systems that teams and AI agents can run and change.

I take backend problems from schema to deployment and stay on for maintenance. As CTO of a legal platform, I led a legacy migration, built billing and access control, and ran the system in production. I adapt to the team's stack and leave code the next engineer can change.

9 years of programming and building web platforms for public services, SaaS products, and internal operations.

6+ teams across legal, education, media, open source, research, and operations.

Bernard Ngandu working across software engineering and research

How I work

A typical engagement, from the first brief to handover.

01

Start from the constraints

Before any design, I list what the system has to live with: data quality, budget, team size, deployment, and who needs access. I turn that into a short brief the team can challenge early, not after launch.

02

Model the business, not the tables

I organize code around business capabilities such as billing, identity, and access, and keep the rules in the domain layer, away from the framework and the database. Rules like expiry and eligibility become named, testable code instead of conditions scattered across controllers.

03

Test at the right boundary

Domain rules get fast unit tests. Use cases run against in-memory adapters, so a scenario like "a covered user cannot buy a second subscription" reads as a specification. A few integration tests cover the database, HTTP, and payment-provider edges. Time is an input I control, so no test depends on the clock.

04

Change live systems in stages

I refactor and migrate live systems in stages, with legacy data and real users in mind. Architecture checks fail the build when a dependency points the wrong way.

05

Work with AI agents, with guardrails

I use coding agents to draft code, write tests, and handle repetitive refactors. They work from conventions written in an AGENTS.md file, and every change has to pass formatting, lint, and type checks. I review each diff, and architecture decisions stay with me.

06

Hand over, don't just deliver

I record each decision with the options I ruled out, keep documentation short, and make ownership, access control, and audit trails explicit. The team can then run the system without me, and so can an agent.

Selected roles

Roles that shaped how I approach software, operations, research, and maintenance.

Auto Lubumbashi logo

Software Engineer at Auto Lubumbashi, focused on TypeScript, Node.js, and React work.

June 2025 to present

Leganews Pro | Veille Juridique logo

Chief Technical Officer at Leganews Pro | Veille Juridique, focused on Symfony, PHP, and MySQL work.

February 2023 to present

Investing In People ASBL logo

Web Developer Consultant at Investing In People ASBL, focused on MySQL, Symfony, and PHP work.

February 2023 to present

GoodBytes.nl logo

Web Developer Consultant at GoodBytes.nl, focused on JavaScript, Openfire, and XMPP work.

February 2021 to April 2022

Velocom logo

Web Developer Consultant at Velocom, focused on MySQL, Symfony, and PHP work.

June 2020 to November 2021

Itot Africa logo

Web Developer at Itot Africa, focused on TypeScript, React, and Node.js work.

November 2020 to May 2024

Itot Africa logo

Web Developer at Itot Africa, focused on TypeScript, React, and PHP work.

July 2019 to November 2020

Itot Africa logo

Web Developer Intern at Itot Africa, focused on HTML, CSS, and JavaScript work.

July 2018 to July 2019

Technologies

Tools I use in production and research.

What I use for production systems, internal platforms, and research prototypes.

Backend

Symfony, PHP, MySQL, PostgreSQL, Doctrine, Ruby on Rails, Redis, Python, Jupyter Notebook, Neo4j, Hono, tRPC

SymfonyPHPMySQLPostgreSQLDoctrineRuby on RailsRedisPythonJupyter NotebookNeo4jHonotRPC

Frontend

React, Vite, TypeScript, Next.js, TanStack Query, Tailwind CSS, TanStack Start, React Native, Leaflet, OpenStreetMap, shadcn/ui, Zod

ReactViteTypeScriptNext.jsTanStack QueryTailwind CSSTanStack StartReact NativeLeafletOpenStreetMapshadcn/uiZod

Delivery

GitHub, Docker, Bun, Turborepo, Nginx, Capistrano, Puma, MinIO, Node.js, Ubuntu, Sentry, Yarn

GitHubDockerBunTurborepoNginxCapistranoPumaMinIONode.jsUbuntuSentryYarn

References

Salvatrice Bahindwa

Salvatrice Bahindwa

Business Lawyer, Managing Partner at LegalterLaw

Guus der Kinderen

Guus der Kinderen

Founder at GoodBytes.nl

Henrique Mukanda

Henrique Mukanda

Co-founder and Deputy Chief Executive Officer at Itot Africa

Uriel Balela

Uriel Balela

Software Developer at Silicon Overdrive PTY (LTD)

Kileshe Kasoma

Kileshe Kasoma

Vice President, Ukamili Digital City

Josue Yenga

Josue Yenga

Data Analyst | Project Management | Artificial Intelligence and Data-Driven Solutions.

Research

Research alongside the engineering

Peer-reviewed research in applied computing, published in journals and conference proceedings.

View research
Bernard during his internship at Itot Africa
Itot Africa internship, 2018
Bernard at Google I/O Extended in Lubumbashi
Google I/O Extended, Lubumbashi, 2024
Bernard at Esis Code Fiesta
Esis Code Fiesta, 2025
Bernard at an operating systems algorithms session
Operating systems algorithms, New Horizons University, 2023
Bernard at Auto Lubumbashi in front of partner logos
First day at Auto Lubumbashi, 2025
Bernard at Science Days at New Horizons University
Science Days, New Horizons University, 2024
Bernard at Science Days at New Horizons University
Science Days, New Horizons University, 2024
Bernard at the IndabaX DRC hackathon
IndabaX DRC hackathon winner, 2024
Bernard at the Kiswahili Festival
Kiswahili Festival, 2024
Bernard at his New Horizons University graduation
New Horizons University graduation, 2024
Bernard at a SoraCert PHP workshop
SoraCert PHP workshop, 2023
Participants at a SoraCert PHP workshop
SoraCert PHP workshop, 2023
Participants at Google I/O Extended in Lubumbashi
Google I/O Extended, Lubumbashi, 2024
Bernard at Deep Learning Indaba in Ghana
Deep Learning Indaba, Ghana, 2023
Bernard at a security workshop at New Horizons University
Security workshop, New Horizons University, 2022
Bernard presenting his undergraduate dissertation
Undergraduate dissertation, 2024
Bernard at a Google Developer Student Club DevFest
Google Developer Student Club DevFest, 2023
Bernard at the Youth Digital Conference
Youth Digital Conference, 2023
Bernard at Deep Learning Indaba in Ghana
Deep Learning Indaba, Ghana, 2023
Bernard after finishing the Semi de Lushi
Semi de Lushi finisher, 2024
Bernard at the Kiswahili Festival
Kiswahili Festival, 2024
Bernard with colleagues on his last day at Itot Africa
Last day at Itot Africa, 2021
Bernard with his poster prize at Deep Learning Indaba
Deep Learning Indaba poster prize, Ghana, 2023
Bernard holding the Flexing with PHP book
Flexing with PHP, 2022
Bernard with colleagues on his last day at Okademy
Last day at Okademy, 2024
Bernard after finishing the CRDB Marathon
CRDB Marathon finisher, 2025
Bernard during his internship at Itot Africa
Itot Africa internship, 2018
Bernard at Google I/O Extended in Lubumbashi
Google I/O Extended, Lubumbashi, 2024
Bernard at Esis Code Fiesta
Esis Code Fiesta, 2025
Bernard at an operating systems algorithms session
Operating systems algorithms, New Horizons University, 2023
Bernard at Auto Lubumbashi in front of partner logos
First day at Auto Lubumbashi, 2025
Bernard at Science Days at New Horizons University
Science Days, New Horizons University, 2024
Bernard at Science Days at New Horizons University
Science Days, New Horizons University, 2024
Bernard at the IndabaX DRC hackathon
IndabaX DRC hackathon winner, 2024
Bernard at the Kiswahili Festival
Kiswahili Festival, 2024
Bernard at his New Horizons University graduation
New Horizons University graduation, 2024
Bernard at a SoraCert PHP workshop
SoraCert PHP workshop, 2023
Participants at a SoraCert PHP workshop
SoraCert PHP workshop, 2023
Participants at Google I/O Extended in Lubumbashi
Google I/O Extended, Lubumbashi, 2024
Bernard at Deep Learning Indaba in Ghana
Deep Learning Indaba, Ghana, 2023
Bernard at a security workshop at New Horizons University
Security workshop, New Horizons University, 2022
Bernard presenting his undergraduate dissertation
Undergraduate dissertation, 2024
Bernard at a Google Developer Student Club DevFest
Google Developer Student Club DevFest, 2023
Bernard at the Youth Digital Conference
Youth Digital Conference, 2023
Bernard at Deep Learning Indaba in Ghana
Deep Learning Indaba, Ghana, 2023
Bernard after finishing the Semi de Lushi
Semi de Lushi finisher, 2024
Bernard at the Kiswahili Festival
Kiswahili Festival, 2024
Bernard with colleagues on his last day at Itot Africa
Last day at Itot Africa, 2021
Bernard with his poster prize at Deep Learning Indaba
Deep Learning Indaba poster prize, Ghana, 2023
Bernard holding the Flexing with PHP book
Flexing with PHP, 2022
Bernard with colleagues on his last day at Okademy
Last day at Okademy, 2024
Bernard after finishing the CRDB Marathon
CRDB Marathon finisher, 2025

Need a software engineer?

Send the goal, stack, and timeline. I'll reply with a next step.

Work with me