Custom development

Software shaped around your business, not the reverse.

There is no off-the-shelf product for every business process. When the software almost fits but not quite, the gap is usually where the money leaks out.

The awkward jobs are the point

Plenty of shops build brochure sites. Far fewer will take on an integration against an ERP with sparse documentation, or inherit a decade-old PHP application with no tests and keep it running while it is modernized.

That is the work we started in and it is still the work we are best at. We came up through servers and back-end code, so the parts of a project that are usually someone else's problem — deployment, database performance, what happens under load — are not handed off here.

How we scope it

Custom work goes wrong when nobody agreed what "done" meant. So we define it up front: what the software must do, what it explicitly will not do in version one, and what it costs. You approve that before any code is written.

Bigger projects ship in phases, with something usable at the end of each one. You are never funding a twelve-month build with nothing to look at until the end.

Working with what you already have

Most projects are not greenfield. There is an existing site, an existing database, and a process people already rely on. Replacing all of it at once is usually the riskiest and most expensive option, so we tend to start by making the current thing stable and instrumented, then replace pieces where replacing them pays.

What we build

Four kinds of project.

Web applications

Tools built for how your business actually operates instead of bending the business around software that almost fits. Quoting tools, customer portals, inventory, scheduling, internal dashboards.

Integrations

Getting systems that were never designed to talk to each other to do exactly that — ERP, accounting, payment processors, CRMs, shipping carriers, and whatever in-house database has been running since 2009.

Automation

If a person is retyping data from one screen into another, that is a job for a script. We find the repetitive work and remove it.

Legacy rescue

Inherited code with no documentation and no original developer. We take these on regularly — stabilize first, then decide what is worth keeping.

What we work in

The unglamorous list.

Included because the people who need this page usually want to know before they call.

Languages & runtimes

  • PHP — modern and legacy, including codebases other shops decline
  • JavaScript and TypeScript, Node.js on the server
  • Swift for iOS, Kotlin for Android

Data & caching

  • MySQL, MariaDB, PostgreSQL
  • Redis, Valkey, and Memcached — caching, sessions, and queues
  • Query and index tuning when the database is the bottleneck

Infrastructure

  • Linux, Apache, and nginx
  • Load balancing and horizontal scaling
  • Cloudflare CDN and edge caching

Integration

  • REST and SOAP APIs, webhooks, scheduled jobs
  • ERP, accounting, CRM, and shipping carriers
  • Payment gateways and PCI-conscious handling

Start here

Got something that almost works?

Describe the problem rather than the solution. Working out the right shape for it is part of the job.