Home → Web development

Software you own,
on servers you control.

Most "custom" web work is a framework, a hosting platform and six SaaS subscriptions wired together — which works until one of them changes its pricing. We build applications that run on your own infrastructure, in code you can read, with no vendor able to switch them off.

0Runtime dependencies in our stack
0.4msServer response on this site
YoursCode, data and servers
EN + ARNative in both

The argument, made with this website

You are reading it right now, so it is a fair thing to inspect. This site is not WordPress, not Next.js, and not a page builder. It is a Node HTTP server we wrote, with no web framework, backed by PostgreSQL with a JSON mirror for resilience, running behind nginx on a single Hetzner box we administer.

Running on that same server, all of it built here:

Server response for this page is around 0.4 milliseconds measured on the box itself. That is not an optimisation story; it is what happens when there is almost nothing between the request and the response.


What we build


How we think about the stack

Boring is a feature

A dependency is a promise someone else made about the future. Every one you add is a thing that can break, change licence, get abandoned, or require an urgent upgrade at an inconvenient moment. We add them when they earn their place and not because they are conventional.

The practical result is applications that still run, unmodified, years later — and that any competent developer can pick up, because there is no framework to learn first.


Where this fits with the rest

Most engagements are not purely one thing. A Shopify brand needs a fulfilment bridge. A web application needs transactional mail that actually arrives. The four pillars — Shopify, web, email and AI systems — are the same team, and the reason we keep them under one roof is that the integration between them is usually where projects fail.


Common questions

Why not just use a framework?

For a large team rotating people through a codebase, conventions are genuinely worth the weight. For a focused application maintained by a small team, the weight is a cost with no matching benefit — and framework major versions arrive whether or not your project wanted one. We will use a framework when the project argues for it.

Who owns the code and the servers?

You do, both. Code ships in a repository you own; infrastructure runs on an account in your name. If you stop working with us, nothing stops working. We think that constraint makes us better, not more replaceable.

Can you take over an existing codebase?

Yes, and a fair amount of our work is that. The first deliverable is usually an honest assessment of what is worth keeping — sometimes the answer is that the existing system is fine and the actual problem is three specific things.

Do you do ongoing maintenance?

Yes, on a flat monthly retainer rather than hourly, so neither of us is incentivised to make a small fix take longer. Security updates, backups, monitoring and a defined amount of change work.

What does it cost?

Fixed quotes for defined builds, flat monthly for ongoing work. We quote after scoping rather than off a price list, because the honest number depends on integrations, not on page count.

Describe the thing your team does manually

The best custom software projects start from a person doing something repetitive, not from a technology. Tell us what that is and we will tell you whether it is worth building — including when the answer is no.

Book a call →

Elsewhere on this site