A useful toolchain has explicit responsibilities. One possible arrangement is Git for history, GitHub for collaboration, Hugo for generation, and Netlify for delivery. That is an option—not a claim that this site has been deployed there.

Keep the responsibilities separate

ComponentResponsibilityNot a guarantee of
GitVersioned source historyCorrectness or deployment
GitHubHosted collaboration and automationSafe workflow permissions
HugoStatic generationRuntime access control
NetlifyAn optional delivery environmentPermanent pricing or universal performance

A failure or substitution at one boundary should not redefine the identities in the graph. Domain meaning belongs to source nodes, not a provider-specific route.

Borrow the useful part of ports and adapters

Ports and adapters asks that application policy stay separate from external mechanisms. Here, a documented node format, ordinary files, and a generated output directory give us a useful boundary. We do not need a large runtime framework to claim that boundary.

Evaluate a host with real constraints

Check current limits, build minutes, artifact retention, team access, DNS setup, security headers, redirects, preview privacy, and recovery steps. Pin the expected Hugo version and keep validation before publication.

AI can draft configuration, but a convincing config file is not evidence that a host applied it. Inspect the actual deployed responses and confirm permissions.

Keep an exit path

Can another static host serve the output? Can a different build environment read the source? Can the builder recover the last accepted release without a working provider dashboard? Answer those questions before making convenience essential.

For current documentation, use the resource directory.