Skip to main content

Content sites and hybrid rendering

Astro

Ships zero JavaScript by default and only the interactive islands a page actually needs. We use it for this site and for marketing and documentation sites that need to load fast on a bad connection.

Interactive interfaces

React

Component-driven architecture with a large ecosystem and mature state management. Used where an interface genuinely needs client-side state rather than static markup.

Type safety across the stack

TypeScript

Contracts between the frontend, the API and the database are checked at build time, which is the cheapest defect prevention available to us and to you.

Backend runtime

Node.js

Non-blocking, event-driven architecture suited to high-concurrency API services. Chosen for fast execution and because the same language runs on both sides of the wire.

Server-rendered React applications

Next.js

Where an application needs server-side rendering, streaming or route handlers, we use Next.js rather than bolting a framework of our own onto a static build.

Primary datastore

PostgreSQL

Relational data with real constraints, transactions and mature backup tooling. The default choice unless a workload clearly argues otherwise.

Hosting and infrastructure

AWS

Managed compute, storage and databases, with infrastructure defined as code so an environment can be recreated and audited rather than reverse-engineered.

API layer where it earns its keep

GraphQL

Used for read-heavy, deeply related data where a single round trip beats several REST calls. Not a default — REST is simpler and cheaper to maintain in most projects.

Choosing a stack for your project

The list above is a menu, not a mandate. We will recommend something different when the constraints justify it — for example a static build with no server at all for a brochure site, or a different database when your access patterns call for it. What we will not do is introduce a framework because it is fashionable and leave you maintaining it.