Skip to main content
Guide Building websites

Website templates and starting points

A template can save you a week, or cost you a month. The difference is not the template, it is whether you checked it before you built on top of it. What a starter actually gives you, where the trustworthy ones come from, and a short checklist to run before you commit.

Reference12 min readLast verified August 2026

What you’ll learn

  • Understand what a template or starter actually gives you, and what it does not
  • Know where reliable starters come from: official example galleries and CLI templates, not random marketplace themes
  • Run a template through six checks before you build on top of it: maintenance, dependencies, fit, license, bloat, and readability
  • Recognize when a template saves real time and when it traps you in someone else's decisions
  • Start clean from an official CLI when nothing on the shelf actually fits

What a template actually is

A template, starter, or boilerplate (the three words get used more or less interchangeably) is a pre-wired project you build on top of instead of starting from an empty folder. Someone already made the decisions you would otherwise make on day one: how the files are organized, which build tool runs the project, which UI library is installed, how routing works, sometimes how authentication or a database connects. You clone it, install the dependencies, and you are looking at a running site before you have written a line of your own code.

That is the entire pitch, and it is a real one. Every project needs the same handful of plumbing decisions made before any actual feature work can start: a build tool, a folder layout, a way to run the thing locally. A good template makes those decisions once, correctly, and lets you skip straight to the part that is actually your project. A bad one makes those decisions for a different project than the one you are building, and you spend your first week undoing them instead of shipping.

New to this? "Template," "starter," and "boilerplate" all describe the same idea: a working project someone else set up that you copy and build on top of, instead of writing every file from a blank folder. They are not the finished product. They are a running head start.

What a template does not do is understand your project. It cannot know your content, your brand, or which of its bundled features you will actually use. Every template ships opinions baked in, a folder structure, a state management choice, a CSS approach, and those opinions become yours the moment you build on top of them, whether you agreed with them or not. That is the trade you are making, and it is worth naming before you go looking for one: speed now, in exchange for inheriting someone else's decisions later.

Where the good ones come from

The source of a template matters more than how polished its screenshot looks. Two places consistently produce starters worth trusting: the official examples that ship with a framework, and the CLI tool that framework provides for scaffolding a new project. Both are maintained (or at minimum reviewed) by the same team that maintains the framework itself, so they track breaking changes and stay compatible with the version you are actually installing.

  • Framework example galleries. Next.js keeps an official examples directory in its own repository, over a hundred working projects covering things like CMS integrations, auth providers, styling setups, and database connections, each one meant to be pulled down directly with the create-next-app CLI.12
  • Official CLI templates. Astro's own scaffolding tool, create astro, accepts a --template flag that points at any official example or a specific GitHub repository, so you are never limited to the bare default.3
  • Curated showcases linked from the docs. Astro also runs a themes and starters showcase, browsable by category and by tooling. It is a legitimate place to start looking, but read the fine print: the listed themes are built by sponsor developers, not the core Astro team, so they still need the checklist in the next section before you commit to one.4

Compare that to the other kind of "template" site: paid theme marketplaces and the first repository a search engine hands you, with no way to tell who maintains it, how many other people are actually using it, or whether it was abandoned the week after it was uploaded. Those are not automatically bad, but they carry none of the built-in trust a framework-maintained example carries, so the burden of checking shifts entirely onto you. Treat them the same way you would treat code from a stranger, because that is exactly what they are, regardless of how good the demo screenshot looks.

Official does not mean skip the checklist, either. Even a framework-maintained example is written to demonstrate one feature clearly, not to be a production base for your specific project, and its dependency versions are frozen at whatever they were when someone last touched that example. "Comes from the framework team" earns a template the benefit of the doubt going in. It does not exempt it from the six checks in the next section.

How to judge a template before you adopt it

Before you run the install command, spend ten minutes actually looking at the project. Six things tell you almost everything you need to know, and all six are visible on the repository page before you clone anything.

CheckGreen flagRed flag
MaintenanceCommits or releases within the last few months; issues get real responsesLast commit over a year old; open issues piling up with no reply
DependenciesA short, purposeful list you recognize most ofDozens of packages, half of which you cannot explain the purpose of
Fit to your projectMatches your actual stack, scale, and what you are buildingBuilt for a much bigger app, or a much smaller one, than yours
LicensePermissive and clearly stated, MIT or Apache 2.0 in a LICENSE fileNo LICENSE file at all, or terms that quietly restrict commercial use
BloatYou could delete a feature you do not need without anything else breakingRemoving anything unused breaks parts of the app that look unrelated
ReadabilityYou can trace a request from route to rendered page in a few minutesDeep abstraction layers or generated code with no clear path to follow
What to check before you build on a template

The license check is the one people skip most often, and it is the one that can bite hardest later. A missing license file is not a neutral default, it usually means you have no legal right to reuse the code at all, commercial or otherwise. If you are not sure what a given license actually permits, Choose a License lays out the common options in plain language before you have to make a call.5

The dependency and bloat checks are really the same question asked twice: how much of this did I not ask for, and how much will it cost me to remove. Open the package.json before you install anything. If you do not recognize a third of the packages listed there, you are about to inherit a third of a codebase you did not choose, along with every future security patch and breaking upgrade those packages ship.

When a template saves time, and when it traps you

A template earns its keep when it solves a problem you would otherwise have to solve yourself and get wrong on the first try: wiring up authentication correctly, configuring a deployment pipeline, setting up a testing harness with sane defaults, or getting a CMS integration talking to your framework. That is real, non-obvious plumbing. Skipping a week of trial and error on it is a legitimate win, especially early on or under a real deadline, and it is the same reasoning covered in how to start building a website: match the tool to what the project actually needs this month.

Take a concrete case: you need billing wired into a small app over a weekend. A well-maintained official example that already talks to a payment provider correctly, handles webhooks, and stores subscription state can save you real, meaningful days, because payment integration is exactly the kind of thing that is easy to get subtly wrong and expensive to get wrong in production. That is a template pulling its weight.

A template becomes a trap the moment its opinions stop matching yours and you keep building on it anyway. Its folder structure fights the mental model you actually want. Its state management library is not one you would have picked, but ripping it out means touching half the files in the project. Its dependencies fall behind and every future upgrade of your framework means also upgrading (or replacing) whatever the template author bundled in, on their schedule, not yours. None of that shows up on day one. It shows up three months in, as the site's structure starts actively working against the features you are trying to add.

Key idea
A template is worth it when it hands you real plumbing you would have gotten wrong anyway: auth, deploy config, a testing setup. It is a trap when its structure and its dependencies stop matching your project and you keep patching around them instead of fixing the root cause.

Starting clean with an official CLI instead

If nothing on the shelf actually fits, and it often will not once your project has any real shape to it, the safer default is not a template at all. It is the plain scaffolding tool your framework ships. create-next-app with no example flag gives you the current default project: current dependency versions, the framework team's own recommended defaults, and an upgrade path that stays in step with the framework itself because it is written by the same people.1 Astro's create astro works the same way when you leave off the --template flag.3

Two official scaffolding commands, no third-party template involved
npx create-next-app@latest my-site

# or, for an Astro project
npm create astro@latest my-site

Starting clean costs you a little more up front. You wire up your own auth, your own CMS connection, your own testing setup, if and when you actually need them. What you get back is a codebase where every dependency is one you chose on purpose, and every file does something you understand, because you or your framework's own team put it there. For a small brochure site that trade is rarely worth it, the official default template is already close to empty. For anything you plan to still be maintaining a year from now, it usually is.

This is also the safer choice when you are still learning the framework itself. A heavier third-party template hides its decisions inside files you have not read yet, so a bug can come from your code, the template's code, or the seam between them, and you cannot always tell which. Starting from the official minimal scaffold means everything in the project is either something you wrote or something the framework team wrote and documented. When something breaks, you have half as many places to look.

Going further: before adopting any template, actually open its dependency tree (npm ls, or just read package.json) and count what is load-bearing versus what is dead weight for your use case. If more than a handful of packages exist to support a feature you will delete on day one, you are not really saving time, you are trading your own decisions for someone else's and paying to remove them later. At that point, forking a minimal official example and adding exactly what you need beats starting from a heavier template and subtracting.
Key idea
A template is a pre-wired project you build on, not a finished product. Trust official example galleries and official CLI templates over random marketplace themes. Before you commit to one, check maintenance activity, the dependency list, fit to your actual project, the license, how much is bloat, and whether you can read the code. Templates save real time on genuine plumbing; they trap you once their opinions stop matching yours. When nothing fits, the plain official CLI for your framework is the safer, cleaner start.
Read next: How to start building a website covers the full toolkit decision this guide assumes, and Structure a site that is easy to grow covers the information architecture a template's folder layout should not be allowed to fight.

Sources

Verified against primary sources: August 2026.

  1. create-next-app. Next.js Documentation, Vercel. https://nextjs.org/docs/app/api-reference/cli/create-next-app
  2. next.js/examples. Vercel (GitHub). https://github.com/vercel/next.js/tree/canary/examples
  3. Install and set up Astro. Astro Documentation. https://docs.astro.build/en/install-and-setup/
  4. Themes and starter templates. Astro. https://astro.build/themes/
  5. Choose an open source license. Choose a License. https://choosealicense.com/
Read nextStructure a site that is easy to grow