
Template details
ssgo
The minimalistic but flexible static site generator for Deno π¦.
About this template
ssgo is a minimalistic static site generator built with Deno that compiles HTML templates and TypeScript creator scripts into a static dist/ site.
What is ssgo?
ssgo is a static site generator for developers who want a minimal, code-driven workflow. It runs entirely on Deno and takes two kinds of input: HTML templates (with placeholder variables) and "creator" TypeScript files that call a buildPage function to produce pages. The output is a fully static website written into a dist/ directory, ready to deploy anywhere. The project is open source under the MIT license and documented at ssgo.netlify.app/docs.
Key Features
- Deno-native β No Node.js or npm required; install with a single
deno installcommand and run everything through the Deno runtime. - Templates and creators β Pages are built from HTML template files in
templates/and creator scripts increators/that use thebuildPagefunction to provide data and output paths. - Hot-reloaded dev server β
ssgo devstarts a development server onhttp://localhost:5580with file watching and just-in-time page builds. - One-command builds β Running
ssgoin the project root compiles the entire site intodist/for production. - Project scaffolding β
ssgo initcreates the standard folder structure:creators/,templates/,components/, andstatic/. - Components and static file management β Beyond templates and creators, ssgo includes a components system and automatic handling of static assets.
- Typed data flow β Creators import the
BuildPagetype fromhttps://deno.land/x/ssgo/mod.ts, giving type checking inside Deno.
Who is it for?
- Deno developers β Anyone already building with Deno who wants a static site generator without pulling in a Node-based toolchain.
- Minimalist static site builders β Developers who prefer writing raw HTML and TypeScript over learning a large framework's templating language.
- Developers needing local-first tooling β Those who want a generator that runs entirely via the
ssgoCLI and offers a fast dev server for local testing. - Open-source contributors β The project is open source and has an active roadmap (the repository shows 175 stars), so developers can extend it by adding config-file support or custom TypeScript compilation options.
What can you do with ssgo?
- Build a blog or documentation site β Use templates for your page skeleton and creators to fetch content (for example, from an API with
fetchTitle) and generate pages with custom filenames and directories. - Prototype a site quickly β Run
ssgo initto scaffold the folder structure, drop in HTML templates, and launch the dev server athttp://localhost:5580for immediate feedback. - Deploy a static site anywhere β The build output in
dist/is plain HTML, CSS, and JavaScript, so it can be hosted on Netlify, GitHub Pages, or any static host. - Automate page generation β Use creators as page factories to loop over data and call
buildPagefor each entry, producing multiple pages from a single template.
How does ssgo work?
Install ssgo with deno install --unstable and the permissions flags, then scaffold a project with ssgo init. You create HTML templates and TypeScript creators; each creator invokes the buildPage function with the template name, a data object, and build options like filename and dir. Running ssgo builds the whole site into dist/, while ssgo dev watches files and re-renders pages just-in-time.
FAQ
Is ssgo free to use?
ssgo is open source and released under the MIT license, so it is free to use and modify for both personal and commercial projects.
Do I need Node.js to run ssgo?
No, ssgo is built exclusively for Deno. You only need the Deno runtime installed to use the CLI and run the generator.
What is the difference between ssgo and ssgo dev?
ssgo performs a one-time production build into dist/. ssgo dev starts a development server on port 5580, watches files for changes, and rebuilds pages just-in-time with hot reload.
What does buildPage do?
buildPage is the core function passed to every creator script. It takes a template filename, a data object (with values that replace placeholders like {{ title }}), and an options object specifying the output filename and directory.
















