Contact, if you are interested in this website / domain name / Sponsorship / Advertisement / Partnership
HomeLearnToolsRoadmapVideosBuildSponsorshipAboutContactStart a project
Intermediate

Choosing a Tech Stack: A Decision Framework

10 minute read · Last updated 2026-10-31 · Written and reviewed by the Code.House editorial team

Stack arguments usually argue about tools when the real variables are the team, the deadline and the shape of the problem. Decide those first and most of the stack falls out of them.

Start with five constraints

  1. Who maintains it? The best stack is usually the one your team already knows. A technically superior tool nobody can debug at 2am is a liability.
  2. What shape is the product? Content site, dashboard, marketplace, data pipeline and real-time application have genuinely different needs.
  3. How much traffic, realistically? Most projects never exceed what a single modest server handles. Designing for imaginary scale is the most common and most expensive mistake.
  4. What is the deadline? Short timelines favour batteries-included frameworks and managed services.
  5. What is the monthly budget? Including the hours someone spends operating it, which is usually larger than the hosting bill.

Stacks that fit common cases

If you are building…A reasonable defaultWhy
Content or marketing siteStatic HTML, Astro, Eleventy or Hugo on a CDNFastest possible pages, trivial hosting, almost no attack surface
Web app with accounts and paymentsNext.js or Remix with Postgres, or Django, or RailsMature auth, migrations and admin tooling
Internal dashboardDjango admin, Retool-style tooling, or a simple React front endSpeed of delivery outweighs polish
Data workPython with pandas or Polars, scheduled jobs, Postgres or DuckDBLibrary ecosystem is unmatched
Mobile appReact Native or Flutter; native when hardware features dominateOne codebase covers both stores
Real-time featuresNode, Elixir or Go with WebSocketsConcurrency models suited to many open connections

Databases

Start with PostgreSQL unless you have a specific reason not to. It handles relational data, JSON documents, full-text search, geospatial queries and time-series workloads competently, which removes several services from an early architecture. SQLite is genuinely excellent for single-server applications and read-heavy sites. Reach for a specialised store — a document database, a cache, a vector database, a queue — when you can name the specific query pattern Postgres is handling badly.

Hosting

  • Static hosting (GitHub Pages, Netlify, Cloudflare Pages, Vercel): free or near-free tiers, global CDN, no servers to patch. Ideal for content sites.
  • Platform as a service (Render, Railway, Fly, App Platform): deploy from Git, managed databases, predictable cost.
  • Virtual machines: cheapest per unit of compute, most operational work.
  • Serverless functions: excellent for spiky, short workloads; awkward for long-running jobs and persistent connections.

Signals that a choice is going wrong

  • Setting up a local development environment takes a new person more than a day.
  • A one-line copy change requires a deployment of four services.
  • Your monthly infrastructure bill is larger than your revenue and traffic is flat.
  • You cannot explain, in one paragraph, why each service in the diagram exists.

Rewrites rarely fix these; narrowing scope usually does. Remove a service, merge two repositories, delete the feature nobody uses.

Common questions

Is it bad to choose boring technology?

It is usually the right call. Mature tools have documented failure modes, large hiring pools and answers already written for most problems you will hit.

When is a rewrite justified?

When the current system blocks a change the business genuinely needs and the cost of that blockage, measured over a year, exceeds the rewrite plus the features you will not ship during it.

Keep reading

Spotted something out of date? Send a correction — guides are revised rather than quietly deleted.