Web Development

Web development that search engines and customers can both read

We build websites and web applications in React and Next.js β€” server-rendered, measured against Core Web Vitals, and structured so Google can index every page you care about.

Why most agency websites quietly underperform

A large share of the sites we are asked to rescue share one root cause: they were built as a single-page JavaScript application, so the server returns an almost empty HTML document and the content only appears once the browser has downloaded and executed the bundle. The page looks fine to the person who commissioned it. To a crawler on a first pass, it is a blank page with a spinner.

The second pattern is subtler. The site renders on the server, but every route shares one title and one description, there is no internal linking beyond the top navigation, and the whole business is compressed into a single scrolling homepage. Google has exactly one document to work with, so the site can only ever compete for one query β€” and it competes for it against organisations with hundreds of indexed pages.

Both problems are architectural. No amount of keyword editing fixes either, which is why sites in this state can stay flat for years while the owner keeps rewriting meta descriptions.

What a build with us includes

Server-rendered by default

Pages are rendered to HTML on the server and statically generated wherever the content allows. The first response already contains your headings, copy and structured data, so a crawler does not need to execute JavaScript to understand the page β€” and a visitor on a slow connection sees content rather than a loading state.

A real URL for every topic

Each service, location, article and case study gets its own route, its own title and description, and its own place in the internal link graph. This is the single largest lever on how many search queries a site can appear for, and it is decided at architecture time rather than bolted on afterwards.

Core Web Vitals treated as a build constraint

We budget for Largest Contentful Paint, Interaction to Next Paint and Cumulative Layout Shift during development instead of profiling after launch. In practice that means images carry explicit dimensions, fonts are self-hosted and preloaded, and client-side JavaScript is added deliberately rather than by default.

Structured data that matches the page

Organisation, Breadcrumb, Service, Article and FAQ schema, generated from the same content the page renders. Because it is derived rather than hand-written, it cannot drift out of sync with what a visitor actually sees β€” which is the condition Google requires for rich results.

A content model you can edit

Content lives in a typed data layer or a headless CMS, not hard-coded in components. Adding a service page or publishing an article does not require a developer, and the templates guarantee the new page arrives with correct metadata and schema already in place.

The repository, on handover

You get the code, the deployment configuration and the documentation. Hosting is yours. We have no interest in holding a client through infrastructure they cannot leave.

Technologies we use for this

Framework

  • Next.js
  • React
  • TypeScript

Also used

  • Angular
  • Vue.js

Styling

  • Tailwind CSS
  • Design tokens
  • CSS Modules

Content

  • Payload CMS
  • WordPress (headless)
  • Typed content layer

Delivery

  • Vercel
  • Docker
  • GitHub Actions
  • Azure

We choose from these based on what the project needs and what your team can maintain after we hand over β€” not on what we most enjoy working with. Where an existing stack is already in place and sound, we work within it.

Projects this suits

Marketing sites that need to rank

Where organic search is a genuine acquisition channel rather than a box to tick, the information architecture matters more than the visual design. We plan the URL structure and internal linking before any interface work begins.

Replacing a slow or unindexable site

Migrations where the existing site is a client-rendered SPA, or is fast in a lab test and slow for real users. We map every existing URL to its replacement and keep 301s in place so accumulated ranking signals survive the move.

Customer-facing web applications

Dashboards, portals and booking systems where the authenticated application sits behind a marketing site that still has to be crawlable. The two have opposite rendering requirements and are best treated as such.

Multi-language rollouts

Sites serving several countries, where each language needs its own indexable URL and a correct hreflang set. Serving four languages from one URL based on browser headers is a common and costly mistake β€” crawlers only ever send one language.

Questions we are asked about this

How long does a website take to build?

A focused marketing site with a defined page set is typically 4–8 weeks from kickoff. Web applications with authentication, integrations or bespoke workflows usually run 8–16 weeks. We scope in phases and give you a fixed price per phase rather than an open-ended hourly arrangement.

Will the site rank on Google after launch?

We can build the conditions that make ranking possible β€” indexable pages, clean architecture, fast loading, accurate structured data and sensible internal linking. We cannot promise positions, and you should be cautious of anyone who does. Rankings depend on competition, your site's authority and Google's own systems, none of which any agency controls. What we can commit to is that nothing technical on the site will be holding it back.

Do you work with an existing codebase?

Yes. A good share of our work is taking over projects built by someone else. We start with a short audit so you get an honest read on whether the existing code is worth extending or whether a rebuild is cheaper over any realistic time horizon.

Who owns the code?

You do, from the first commit. We develop in your repository where you have one, or hand over a complete repository with deployment documentation at the end of the engagement.

Can you work with our in-house developers?

Regularly. That might mean owning a defined part of the system, doing code review, or embedding alongside your team for a period. We adopt your conventions and branching model rather than importing ours.

Thinking about web development?

Send us the problem and any constraints you already know about. We will come back with what we think it needs, an approach, and a realistic range β€” or tell you it is not work we are right for.

Start a conversation