What is StarterStack?

It's hard to know how to get started on a project. StarterStack provides an opinionated foundation to help beginners get off to a good start.


Don't recreate what can be standardized. For most projects, there's no reason to build a new component library.

Minimize choices. The need to make choices about things like what test framework to use are a major barrier to getting started, but most of them don't matter much—just use a sensible set of defaults to start.

Treat technology choices as bets. In general, we want to bet on technologies that we have high confidence will be long-term "winners"—that is, well-supported and broadly used. We can take some riskier bets, but we should limit how many and only do so when we think there's a payoff that's worth the risk.

Guide towards the pit of success. Have things like logging set up from the beginning so they're not scary and costly to add once you actually need them.

Keep initial costs low. Prefer using services that have generous free tiers.

Centralize configuration. Put configuration in package.json whenever possible.

How to Use This Documentation

For those who are new to StarterStack, this documentation is designed to be read linearly — the intent is for any given page be fully comprehensible with no background knowledge beyond the pages that precede it.