Skip to content

The right tool for the job

I like to think of the different stacks like different vehicles. There is no one best vehicle, more a good choice for a task. For example if you need something large moving like furniture, a van would be a good choice, but if its a lot of furniture then a truck may be better so you dont have to do as many trips. Both are capable of moving furniture but one is better for volume. When we apply this into the technology choices, we can see that there are different stacks that are better for different tasks but all are capable of getting the job done. The following are some examples of stacks (that I have worked with) and my own opinion on when they are a good fit for a project. This is not an exhaustive list of stacks and technologies, but rather a starting point for discussion.

Mobile

Flutter

A framework that builds native-quality iPhone and Android apps from a single codebase. You write it once and it runs on both - no two teams, no two timelines. It compiles to native code rather than running through a bridge, so it holds up under load and gives a genuinely consistent feel on both platforms out of the box.

Strengths

  • one codebase, which halves the cost and keeps the experience identical on both platforms
  • compiled native code, so there's no performance compromise
  • amazing dev features such as hot reload, to speed up development and testing
  • the option to expand to web and desktop later with the same code

The tool I start most new mobile apps with. One codebase, native performance, and a consistent experience on both platforms.

Example: A booking and management app used by staff and customers, shipped on iPhone and Android from one codebase.

React Native

Builds iPhone and Android apps in JavaScript, the same language as the web. A good fit when the product or the team is already JavaScript-heavy, because logic and even whole screens can be shared with a web app.

Strengths

  • one language across web and mobile, so code and skills carry over
  • a huge library ecosystem and a deep pool of JavaScript developers
  • the fastest path if you already have a web app built in React
  • live reload for quick iteration during development

When the product and team are already JavaScript, and sharing code with a web app matters more than pixel-perfect consistency between platforms.

Example: A delivery app that shares its order logic and UI components with an existing web dashboard.

Web Frontend

React

A library for building interactive web interfaces. It powers a huge share of the modern web, so there's a vast ecosystem and a deep pool of developers.

Strengths

  • a massive ecosystem, so a library or answer exists for almost anything
  • component reuse, which keeps large interfaces maintainable
  • flexibility to play well with other tools
  • an easy market for hiring and handing over

The safe default for most web apps - flexible, well-supported, and unlikely to become a dead end.

Example: A customer dashboard with charts, tables, and live updates for a SaaS product.

Next.js

A framework built on React that adds server-side rendering, routing, and performance. This very site is built on it.

Strengths

  • server-rendered pages that rank well in search engines
  • fast first paint and strong performance scores
  • simple deployments, previews, and rollbacks
  • excellent developer experience out of the box

When SEO and page speed matter - which is most customer-facing sites and apps.

Example: A marketing site and booking portal for a restaurant group, ranking well on Google.

Vue.js

A framework similar in spirit to React but with a gentler learning curve and a reputation for clear, pleasant code. It's also excellent for fast development - its template syntax gets a working interface up in less time than most alternatives.

Strengths

  • an easy learning curve, so new team members get productive fast
  • very quick development, especially for forms and data-heavy screens
  • clear, readable templates
  • a smaller footprint than some alternatives

Great for fast iterations - when you want a working proof of concept up quickly, or a project where things will change a lot before they settle.

Example: A proof-of-concept project for a startup, to test the idea before any big investment.

Angular

A complete framework - routing, forms, state management - all built in. Opinionated, which means fewer decisions to make and more consistency across a big team.

Strengths

  • everything included, so the whole team agrees on one way of working
  • strong TypeScript support that catches mistakes early
  • a design built for large applications and long time horizons
  • enterprise-grade tooling and testing

When it's a large project with many contributors who need one consistent structure.

Example: A large internal platform with dozens of screens and several teams contributing over years.

Backend

.NET (C#)

Microsoft's flagship framework for building business software, from APIs to large internal systems. It's the natural fit inside a Microsoft shop - it pairs with Azure, SQL Server, and enterprise identity tools out of the box.

Strengths

  • the first-class ecosystem for the Microsoft stack - Azure, SQL Server, Active Directory
  • built for enterprise: big teams, long-lived systems, strict standards
  • strong typing and mature tooling that keep large codebases in check
  • excellent performance at scale

When you're in the Microsoft ecosystem, need enterprise-grade compliance and governance, or want a stack that's easy to staff and hand over.

Example: A .NET backend for a business's internal platform, tied into corporate single sign-on and running on Azure.

Python

One of the most popular languages in the world, and the default for AI, machine learning, and data work. Fast to write and easy to read.

Strengths

  • an ecosystem for AI and data that nothing else matches
  • quick prototyping and iteration
  • readable code that's easy to hand over
  • the same comfort level automating boring tasks

When AI, data work, or speed of iteration is involved.

Example: A pipeline that turns messy business data into clean dashboards and reports.

PHP (Laravel)

The workhorse of the web, powering a huge share of the internet. Modern frameworks like Laravel have made it genuinely pleasant to build with.

Strengths

  • the ability to run almost anywhere, cheaply
  • a mature ecosystem and a huge developer base
  • Laravel, which makes common tasks quick to build
  • excellent, well-maintained documentation

When you want a cost-effective, easy-to-host web app that any PHP developer can maintain.

Example: A booking and management platform for an entertainment business.

Node.js

Runs JavaScript on the server, so one language spans the whole product. Excellent for real-time features like chat and live updates.

Strengths

  • one language across the frontend and backend
  • strong support for real-time features like chat and notifications
  • a huge package ecosystem
  • efficient handling of high-traffic APIs

When you want a unified JavaScript team, or real-time features are a core requirement.

Example: A collaboration tool where multiple people see changes update live.

Cloud & Infra

AWS

Amazon's cloud platform and the industry default. More services, more maturity, and more global reach than any competitor.

Strengths

  • the largest service catalogue of any cloud
  • scale from a hobby project to a global service
  • an industry standard, so skills transfer well
  • pay-for-what-you-use pricing

The safe default when you need scale, flexibility, or a wide range of managed services.

Example: A platform that scales up automatically on busy days and back down to keep costs low.

Azure

Microsoft's cloud platform, with deep integration for .NET apps, enterprise tools, and identity.

Strengths

  • the best fit for the Microsoft stack
  • enterprise-friendly compliance and security features
  • strong identity and access tools
  • good hybrid and on-premise options

When you're building on .NET, or already live inside the Microsoft ecosystem.

Example: A .NET backend with corporate single sign-on for a business's internal tools.

Firebase

Google's platform that handles logins, databases, and hosting for you. This site runs on it.

Strengths

  • no server management at all
  • authentication and a database set up in minutes
  • real-time data sync out of the box
  • a generous free tier

The fastest way to get a working product live - ideal for MVPs and prototypes.

Example: An MVP launched in weeks with logins, a database, and hosting all handled for you.

Docker

Packages your app with its environment so it runs identically on a laptop, a test server, and in production.

Strengths

  • no more 'works on my machine' surprises
  • easy scaling and rollback
  • consistency between development and production
  • isolation between apps

When you want deployments that are boring and predictable.

Example: Running the same platform on staging and production without surprises.

PostgreSQL

The open-source relational database most developers choose first. Reliable, powerful, and free of vendor lock-in.

Strengths

  • rock-solid transactions and data integrity
  • support for both structured data and JSON
  • strong performance and a rich set of extensions
  • no licence fees

The sensible default for storing data that must stay accurate and reliable.

Example: The database behind a booking platform handling thousands of bookings.

SQL Server

Microsoft's relational database, the natural partner for .NET and Windows-based systems.

Strengths

  • deep .NET and Azure integration
  • strong business intelligence and reporting features
  • enterprise security and tooling
  • excellent performance at scale

When you're on the Microsoft stack or need enterprise-grade data features.

Example: The database for a large admin platform built with .NET.

Common questions

The honest answers to the questions clients actually ask.

What would you build a new app with?

Flutter is my default for mobile apps - one codebase, native performance, and a consistent experience on iPhone and Android. For web I usually reach for React/Next.js or Vue. The choice always depends on the job, which is the point of this page.

When would you pick React Native over Flutter?

When the product or team is already JavaScript-heavy and sharing code with a web app matters more than pixel-perfect consistency between platforms. If you already have a React web app, React Native can reuse a lot of it.

Is Flutter only for mobile apps?

No. The same Flutter code can also target web and desktop, so it's a genuine option if you might want those platforms later without a rewrite.

Do you only work with the technologies on this page?

No. This is the core toolbox I reach for, but I'm happy to work with a specific technology if your project needs it. If it's outside my wheelhouse, I'll bring in someone I trust rather than wing it.

Can you work with our existing stack?

Yes. I'm just as happy to slot into your existing team and codebase as I am to build something from scratch. The point is to use the right tools for your situation, not to push mine.

Let's Build Something

Tell me about your project and I'll get back to you within 24 hours. No obligation, just a conversation.

How should I get back to you? Select all that apply