A zero-build approach for small sites

There is genuine pleasure in building a small website with nothing but hand-written HTML, CSS, and JavaScript on a keyboard. No transpiling, no compiling, no package manager in sight. The result is a site whose source code is exactly what ships to the browser.

For the website that accompanies my agency's podcast, the build process was settled after literal seconds of debate: there would be none. That choice turned out to be liberating. Writing deliverable HTML and CSS felt direct and hands-on, and it's the same feeling that makes native CSS features — calc(), custom properties, and the rest — so appealing these days. Modern CSS has eliminated much of the original excuse for preprocessors like Sass, and vanilla JavaScript is fully featured across browsers without any compilation step.

Not every problem is a pipeline problem

Complex sites built by large teams benefit from pipelines and conventions that keep everyone consistent and catch errors before deploy. That complexity, though, is not universally required. For a small, low-traffic site, every dependency that automatically gets put to work eventually gets billed as maintenance.

Returning to a project after six or twelve months often exposes that hidden cost. What should be a one-line CSS tweak can become a session of hunting down a broken dependency, which then requires an update, which then demands another Node version — and before long, the change balloons into a battle with entropy.

The principle of least power, applied to tooling

The front-end practice of choosing the least powerful language for the job — for instance, an HTML button rather than a recreated one with ARIA and JavaScript — has an equivalent for tooling. Instead of reaching for a heavyweight toolchain by default, a boring baseline of plain HTML, CSS, and JavaScript is the right starting point. Only when that baseline becomes genuinely painful should a task manager get added in, and every new addition should be treated as a constraint on the project's long-term lifespan.

The goal for the coming year is simple: no more weighty node_modules folders. Just lean, dependency-free HTML, CSS, and JavaScript.