Skip to content

Technology stack

What we build on, and the rule for choosing it

A stack is a maintenance commitment, not a preference. These are the technologies we run in production for clients today.

Front end

frontend

Typed, accessible interfaces that render fast on mid-range hardware.

React 18
Component architecture, hooks, SSR / prerender
TypeScript
Type safety across the client boundary
Vite
Build tooling and dev server
Next.js
When SSR or ISR is a requirement
Tailwind CSS
Design-token driven styling
React Native
Shared-logic mobile clients

Back end

backend

Services with explicit contracts, prepared statements and audit trails.

PHP 8.3
Laravel and clean-architecture modular APIs
Node.js
Event-driven services and tooling
Python
Data pipelines, automation, FastAPI
Go
High-throughput services and CLIs
REST / OpenAPI 3
Versioned, documented contracts
GraphQL
Aggregation over multiple back ends

Cloud & DevOps

cloud

Environments defined as code, so a rebuild is a pipeline run.

Amazon Web Services
EC2, ECS, RDS, S3, CloudFront, Lambda
Microsoft Azure
App Service, AKS, Azure SQL, Entra ID
Docker
Reproducible build and runtime images
Kubernetes
Orchestration where the load justifies it
Terraform & Ansible
Infrastructure and configuration as code
GitHub Actions
CI/CD with tested rollback

Data

database

Schemas designed for the queries the business actually runs.

MySQL 8
Transactional workloads, InnoDB tuning
PostgreSQL
Complex queries, JSONB, partitioning
Redis
Caching, queues, rate limiting
Elasticsearch
Search and log aggregation
ClickHouse
Analytical workloads at volume

Selection policy

How a technology gets onto that list

Boring by default

A technology has to earn its place against the well-supported option. If we cannot name three reasons in writing to deviate, we do not deviate.

Hireable after handover

You have to be able to recruit for the stack once we are gone. That rules out niche frameworks with one maintainer, however elegant they are.

Supported for the contract term

We do not start a project on a runtime whose security support ends inside the expected life of the system.

Exit path documented

For every managed service we introduce we write down what replacing it would take. A dependency you cannot leave is a dependency you did not choose.