DEV Community

Cover image for Why I Built goboot: A Developer-First Go Scaffolder That Actually Does Something
Timo Schmidt
Timo Schmidt

Posted on

Why I Built goboot: A Developer-First Go Scaffolder That Actually Does Something

When you start a Go project, you usually copy something old, grab a half-broken boilerplate, or stitch together folders until it “feels right.”

But what if you had a clean, versioned starting point — designed from day one to scale, evolve, and stay sane?

That’s where goboot comes in.


What is goboot?

goboot is a deterministic scaffolding tool for Go projects.

Not a framework. Not a code dump.

Instead: a modular, developer-first CLI that grows clean Go projects in structured, maintainable layers.

It’s designed for:

  • OSS maintainers who care about hygiene
  • Indie builders and backend devs who hate chaos
  • Infrastructure/codegen projects that need reproducibility

v0.0.0 – Structured Bootstrap with Real Output

The first public release is more than just layout:

  • CLI entrypoint: goboot
  • Working service system (base_project)
  • Go text/template rendering — both in paths and file content
  • A fully functional scaffold generator with placeholders and structure
  • Full documentation: README, ROADMAP, VERSIONING, ADRs, diagrams

This means goboot already does something useful:

It can render a minimal project scaffold from a config, cleanly and reproducibly.


Design Principles

  • Modular by default (cmd/, pkg/, configs/, templates/)
  • Deterministic output — no random CLI magic
  • Layered roadmap with minimalism, security, and CI in mind
  • No runtime reflection, no global state, no magic

It’s boring on purpose — so your projects don’t fall apart.


Roadmap Highlights

Next milestones include:

  • CI & lint/test automation
  • Contributor workflows
  • Docker support
  • Template extension system
  • Plugin-based generator logic

Full roadmap: ROADMAP.md


Try It

git clone https://github.com/it-timo/goboot.git
cd goboot
go run ./cmd/goboot/main.go
Enter fullscreen mode Exit fullscreen mode


`

This will invoke the base_project service — rendering a basic project scaffold from templates using your config.


Follow Along

  • Star the repo
  • Join discussions or open issues
  • Future releases will be added as comments below

Thanks for reading —
Timo


GitHub: https://github.com/it-timo/goboot
License: MIT

`


Enter fullscreen mode Exit fullscreen mode

Top comments (1)

Collapse
 
it-timo profile image
Timo Schmidt

📦 v0.0.1 – Local Tooling & Linting

First functional release of goboot — bringing local developer workflows and static analysis into play.

Where v0.0.0 laid out the project’s structure, this version adds actual tooling support: reproducible hygiene, pre-commit setup, and script-based linting aligned with modern Go practices.

🚀 What's inside:

  • 🧰 Makefile & Taskfile.yml for common tasks
  • ✅ .golangci.yml with curated linters
  • 🧩 Pre-commit hooks via .pre-commit-config.yaml
  • 📄 Lint configs for Markdown/YAML
  • 🧪 base_lint: registers all lint-related script entries
  • 🧪 base_local: renders and writes local dev scripts
  • ⚙️ Auto-generated scripts in scripts/ (e.g. lint.sh)
  • 🧭 Updated ROADMAP.md, fresh ADRs, and architecture diagrams

📌 Status:
Still within the v0.0.x pre-alpha phase.
But this marks the shift from structure to working logic.

🔜 Next:
Local testing support (base_test) is up next.