Skip to content

weburz/terox

Terox

Release License Go Version QA Checks Go Report Card

Terox mascot: a Go gopher in a hard hat building wooden scaffolding around template files with {{.variable}} tokens floating in the scene

Terox is a small, cross-platform CLI for scaffolding new projects from templates. Point it at a GitHub repository or a local directory, answer a few prompts, and Terox renders a ready-to-edit project into the output folder of your choice.

It ships as a single Go binary, so there is no language runtime to install on the target machine.

Quickstart

Install Terox using whichever method matches your platform.

macOS / Linux (Homebrew):

brew install weburz/tap/terox

Windows (Scoop):

scoop bucket add weburz https://github.com/weburz/scoop-bucket
scoop install weburz/terox

Direct binary download:

Grab the archive for your platform from the latest release, extract it, and move the terox binary somewhere on your PATH.

From source (Go 1.23+):

go install github.com/weburz/terox@latest

Heads up: with go install, make sure $(go env GOPATH)/bin (usually ~/go/bin) is on your PATH or the terox command will not be found. See the installation docs for the full setup.

Create a starter template to play with:

terox create demo --path ./templates

Scaffold from it:

terox scaffold ./templates/demo --output ./my-project

Terox will prompt you for the variables declared in the template's terox.json, render filenames and file contents, and write the result into ./my-project.

You can also scaffold straight from a public GitHub repository:

terox scaffold weburz/simple-website-template --output ./my-site

For CI or scripted use, skip the prompts:

terox scaffold ./templates/demo \
  --output ./my-project \
  --set project_name=portfolio \
  --set author="Sagar Kapoor" \
  --set license=MIT \
  --non-interactive

How a template is structured

A Terox template is just a directory (or a GitHub repository) containing an optional terox.json manifest and any files you want to ship.

my-template/
├── terox.json
└── {{.project_name}}/
    ├── README.md
    └── .gitignore

terox.json declares the variables Terox will prompt for:

{
  "name": "Example Template",
  "description": "A starter template generated by terox create",
  "variables": [
    { "name": "project_name", "prompt": "Project name", "default": "my-project" },
    { "name": "author",       "prompt": "Author",       "default": "" },
    { "name": "license",      "prompt": "License",      "default": "MIT",
      "choices": ["MIT", "Apache-2.0", "GPL-3.0", "None"] }
  ]
}

Inside template files, reference variables with Go text/template syntax:

# {{.project_name}}

By {{.author}}

Licensed under {{.license}}.

Directory and file names are templated the same way, so {{.project_name}}/ becomes portfolio/ in the rendered output.

Binary files (detected by content sniffing) are copied byte-for-byte without rendering, so images and other non-text assets pass through safely.

If a template has no terox.json, Terox copies the files as-is — handy for turning any GitHub repo into a quick git clone without the history.

Commands

Command What it does
scaffold <ref> Render a template into --output. <ref> is owner/repo or a local path.
create <name> Write a starter template directory you can edit and publish.
list List templates cached locally.
clean Delete the local template cache.
version Print the build version.

Run terox <command> --help for the full flag list on each subcommand.

How Terox fits next to other tools

The project-scaffolding space has several great tools, and Terox is not trying to replace any of them:

  • Cookiecutter is the long-standing Python tool with a huge ecosystem of community templates. If you live in the Python world or want a template from its catalog, it remains an excellent choice.
  • copier is a modern Python alternative with a feature Terox does not yet have: the ability to update an already-scaffolded project when the upstream template changes.
  • hay-kot/scaffold is another Go scaffolder with strong support for in-project component generation and hooks.
  • Create React App and similar framework CLIs (nuxi init, create-vue, create-next-app) are perfect when you just need the official starter for one specific framework.

Terox's niche is a small, dependency-free Go binary that works equally well with local template folders and GitHub repositories, with a manifest format that stays out of your way. If one of the tools above is already a good fit for your workflow, please keep using it. If you want something lightweight to scaffold internal templates inside your team or organization, Terox might be a comfortable choice.

Status

Terox is young and still evolving. The core scaffolding pipeline works: GitHub and local templates, interactive prompts, variable substitution in file paths and contents, binary-safe copying, and a non-interactive mode for CI.

Planned improvements include authenticated downloads for private repositories, an explicit "copy without rendering" path list, and template update support.

Feedback and contributions are welcome — please open an issue or a pull request.

License

Terox is released under the MIT License. You are free to use, modify, and distribute it under those terms.

About

A CLI tool to scaffold project repositories from prebuilt templates

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors

Languages