The problem
Marketing and docs sites drift into Next.js or Hugo because "we need a template system". That adds a JavaScript toolchain for pages that are constant for the entire life of a deploy. The build machine needs network access; the CDN serves a process that is not running.
Why Ecko
- Generator is an Ecko program
build.eckoimports page modules, renders HTML, writesdist/. Preview withserver.eckouses the same modules - output is byte-identical to what ships.- No production runtime
- Cloudflare serves static files. A typo fix is regenerate and deploy, not roll a container. The dogfood is honest: the footer says "built with ecko" because it is.
- Docs from Markdown
- Hand-written docs live as Markdown; the build discovers and renders them. One toolchain for marketing pages and documentation.
In practice
import std.fs PAGES = [{ route: "", html: "<h1>Ecko</h1>" }, { route: "/download", html: "<h1>Download</h1>" }] for page in PAGES { fs.mkdir("dist{page.route}") fs.write("dist{page.route}/index.html", page.html) }
Try it on your workload.