Zero dependencies: what it means and why it matters

Forge has no third-party Go dependencies. Pure stdlib. The stability this creates is not just philosophical -- it has direct consequences for every delivery channel your content serves.

Forge has no third-party Go dependencies. The entire framework runs on the Go standard library.

This is a deliberate constraint, not an oversight. Here is what it means in practice.

Nothing breaks on someone else's schedule

A dependency is a release schedule you do not control. A security patch in a transitive dependency can break your build. A major version bump in an ORM can require migration work before you can upgrade anything else. A package being abandoned means you absorb the maintenance cost or fork it.

None of this applies to Forge. The standard library is versioned with Go itself. Breaking changes go through the Go compatibility guarantee. You upgrade Go, not a dependency graph.

Configuration

Forge is configured via a key=value file at startup. Nine keys cover everything:

KeyPurpose
base_urlCanonical base URL
httpstrue / false -- redirect HTTP to HTTPS
nav_modedb or code -- NavTree source
org_nameOrganisation name for JSON-LD
org_typeOrganisation type for JSON-LD
twitter_site@handle for Twitter Card meta
og_imageFallback Open Graph image URL
media_pathPath to media directory (forge-media)
media_max_sizeMaximum upload size in bytes

One key is not in the config file: secret. Forge panics at startup if you attempt to set it there. It is required as an environment variable. This is intentional -- secrets do not belong in files that get committed.

Forge validates all config at startup and stops if anything is wrong. The binary does not start in a broken state and fail later when a request hits the misconfigured path.

Health endpoint

GET /_health

Returns HTTP 200 with a JSON body containing framework version and status. The same information is written to the startup log.

This is available from the first request. No setup, no configuration, no plugin.

The stability both layers rely on

Four audiences. Two layers -- reading and operations. Neither layer is useful if the binary is unstable, the config is wrong, or a dependency update broke the build at 2am.

Zero dependencies and fail-fast startup are the foundation everything else runs on. They are not interesting features. They are the reason the interesting features are reliable.