Backend & API work
Domain modelling, typed PHP, clean REST or GraphQL surfaces. Built to be read by the next developer, not just by the interpreter.
- Laravel
- Symfony
- API design
Rotterdam · Available Q1 2027
Nine years of production PHP: Laravel and Symfony backends, legacy systems brought back from the brink, and APIs that stay fast when the traffic arrives.
<?php
declare(strict_types=1);
final readonly class IssueInvoice
{
public function __construct(
private InvoiceRepository $invoices,
private EventBus $events,
) {}
public function handle(Order $order): Invoice
{
$invoice = $this->invoices->create(
customer: $order->customer,
lines: $order->lines,
);
$this->events->dispatch(new InvoiceIssued($invoice));
return $invoice;
}
}Core stack: PHP 8.3, Laravel, Symfony, PostgreSQL, MySQL, Redis, RabbitMQ, Docker, PHPUnit, Pest, REST & GraphQL, CI/CD
About
Good backend work rarely makes the demo. It makes the quiet Tuesday when nothing breaks, the deploy nobody has to babysit, and the new hire who understands the codebase in a week.
I started in agency PHP, fixing other people's code before I was trusted to write my own. That order turned out to be a good education: I learned to read a system before rewriting it, and to respect the reasons a weird decision exists.
Today I work directly with product and engineering teams, mostly on systems that have outgrown their first architecture. I bring type safety, tests where they pay for themselves, and a strong preference for the simplest thing that will still be maintainable in three years.
What I do
Most projects start with one of these and grow into a mix. Scoped in writing, priced per milestone, no open-ended retainers.
Domain modelling, typed PHP, clean REST or GraphQL surfaces. Built to be read by the next developer, not just by the interpreter.
Careful, test-covered migrations from PHP 5.x and framework-era code to modern PHP 8.3, without freezing the product roadmap.
Query plans, indexes, caching layers, queues and background workers. Usually the fix is less code and a better schema.
Containerised environments, CI pipelines, zero-downtime deploys and monitoring that tells you the truth before your customers do.
Selected work
Rebuilt the billing core around an event-sourced ledger and moved reporting off the request cycle. p95 latency dropped from 780 ms to 92 ms while invoice volume tripled.
-88%
p95 latency
3x
invoice volume
Incremental migration of a decade-old custom PHP application onto Laravel with a strangler pattern. Shipped every week during the migration, cut over with zero downtime.
0 min
downtime cutover
11 mo
migration window
Designed an idempotent queue pipeline for shipment events, with retries, dead-letter handling and per-tenant backpressure. Now processes 1.2M jobs a day on the same hardware.
1.2M
jobs per day
99.99%
pipeline uptime
Client names used with permission. Deeper write-ups available on request.
Track record
2022 — now
Rotterdam / remote EU
Backend contracts for product teams of 3 to 40 engineers. Architecture reviews, legacy migrations and hands-on delivery.
2019 — 2022
Kaart Digital
Owned the payments and subscriptions domain for a ticketing platform serving 6M monthly visitors.
2017 — 2019
Studio Noord
Custom CMS work, integrations and the unglamorous maintenance that keeps agency clients happy for years.
How we work
Read the code, run the tests, profile the slow paths. You get a written findings note before any estimate.
A short, sequenced plan with the risky parts named up front. Small pull requests, reviewable by your team.
Tests first where it matters, weekly demos, and no surprise rewrites hidden inside a feature ticket.
Documentation, runbooks and a walkthrough with your engineers. Nothing left that only I can operate.
“Noah took a codebase three of us were afraid to touch and made it ordinary. Deploys went from a Friday ritual to a non-event.”
Contact
Tell me what is slow, fragile or stuck. I answer with a short read on the problem and whether I am the right person for it, usually within two working days.
Availability
Two contract slots open from January 2027.