Web application development for systems that have to last

Customer portals, internal tools, APIs and the admin panels behind them — built on deliberately conventional technology, because the fashionable stack is usually the one nobody can maintain in three years.

What we build

What we actually get asked for.

Few of these projects are public marketing sites. Most of it is the software a business runs on.

/ 01

Customer portals

Where your clients check orders, download documents, raise tickets and pay. The hard parts are rarely visual: permissions per account, audit trails, document generation and an authentication model that survives a security review.

/ 02

Internal business tools

The systems that replace a spreadsheet nobody is allowed to touch. Scheduling, stock, quoting, approvals, reporting. Built around how the work is actually done, which is usually not how the process documentation says it is done.

/ 03

APIs and integrations

REST and webhook layers that connect what you run to what your partners run. Rate limiting, retries, idempotency and useful error messages — the parts that decide whether an integration is a one-off or something you can rely on.

How we work

Conventional on purpose, and documented.

We pick technology on one criterion above all others: whether a competent team other than ours can pick it up in three years and understand it. That rules out a lot of what is fashionable at any given moment, and it is the single decision that most affects what the software costs you over its life.

Stack

PHP and Node.js on the server, PostgreSQL or MySQL for data and plain server-rendered pages wherever a single-page application would only add moving parts. React or Vue when the interface genuinely needs it — a dashboard with live state, a complex editor, a drag-and-drop planner. We host what we build, so we carry the cost of any over-engineering ourselves.

What comes as standard

  • Automated tests around the parts where a bug costs money — billing, permissions, data integrity
  • CI/CD with a staging environment that mirrors production, so releases are routine rather than an event
  • Database migrations under version control; no manual schema changes applied straight to a live system
  • Structured logging and error alerting, so failures reach us before they reach your customers
  • Written handover documentation — how it deploys, what it depends on, how to run it locally

Performance is a feature, not a phase

Slow software quietly costs more than it appears to: staff work around it, customers abandon it, and search engines rank it lower. We treat query plans, caching and payload size as part of the build rather than as an optimisation project scheduled for after launch — a date that, in practice, never arrives.

Questions

Things clients ask before starting.

Do you work with our existing system or replace it?
Both happen. Where a system still does its job, we build around it and integrate with it; where it blocks the business we plan a staged replacement that keeps the old and new running in parallel. A hard cutover on a system people depend on daily is rarely worth the risk.
Who owns the code?
You do. Once the work is paid for, the bespoke code written for you is assigned to your company together with the repository history and deployment configuration; open-source components stay under their own licences. We do not keep clients through lock-in — if you want to move the work in-house or to another supplier later, we hand over documentation and walk the new team through it.
Can you host it as well?
Yes — we run our own infrastructure and manage hosting, backups, certificates and monitoring for most of what we build. It can equally run on your cloud account if policy requires that; we will set it up and document it either way.
How do you handle changes after launch?
Through a maintenance arrangement with a defined monthly capacity, not an hourly meter that penalises you for asking. Clients typically keep developing the system for years after the first release — that is the normal shape of this work.
Next step

Tell us what the system has to do.

A short description of the process and the systems involved is enough to start. We will come back with questions and a scoped estimate.