Skip to content
/ goboot Public

Modern Go project generator for CLI, REST, and backend tools. Batteries included: clean structure, Docker, CI, and editor presets — ready in seconds.

License

Notifications You must be signed in to change notification settings

it-timo/goboot

Repository files navigation

goboot

A modular, versioned starting point for building production-grade Go projects.

License Version


📦 What is goboot?

goboot is a deterministic scaffolding tool that provides a clean, modular foundation for real-world Go projects — including applications, tools, and infrastructure code.

It’s not a framework. It’s not an IDE. Instead, goboot is built for OSS maintainers, contributors, and enterprise teams who care about long-term project hygiene, structure, and reproducibility.

This repository focuses on layered, progressive structure scaffolding, not one-click demos or opinionated code generation.

The goal isn’t just to get you started — it’s to help you grow Go projects that remain clean, consistent, and scalable over time.


📁 Current State (v0.0.1)

This version (v0.0.1) includes:

  • CLI entry point: cmd/goboot/main.go
  • Configuration logic: pkg/config/
  • Core engine: pkg/goboot/
  • First service example: pkg/baseProject/
  • Shared types: pkg/types/
  • Utility helpers: pkg/utils/
  • Configuration files: configs/goboot.yml, configs/base_project.yml
  • Project templates: templates/project_base/
  • Architecture decisions: doc/adr/
  • Visuals: doc/img/, doc/diagram/
  • GitHub funding: .github/FUNDING.yml
  • Central docs: README.md, ROADMAP.md, VERSIONING.md, WORKFLOW.md, LICENSE, NOTICE
  • Dev files: .editorconfig, .gitignore, .gitattributes, .env.example, .env.ci, .nvmrc, .version
  • New in v0.0.1:
    • Makefile for common tasks
    • Taskfile.yml for task runner support
    • .golangci.yml for Go linting configuration
    • .markdownlint.yaml for Markdown linting
    • .yamllint.yaml for YAML linting
    • scripts/ directory for developer scripts (e.g., lint)

The project is in an early layout and planning phase. The structure is minimal but already modular and documented.


📐 Intended Design Principles

Even in early stages, goboot is being built with:

  • Layered versioning and changelog visibility
  • Clear module boundaries (cmd/, pkg/, configs/, etc.)
  • Future support for Docker, CI/CD, and template-driven code generation

You can follow the structural milestones in ROADMAP.md.


🛠️ Getting Started (For Contributors Only)

Requirements

  • Go 1.24+
  • Make (optional, for Makefile tasks)
  • Task (optional, for Taskfile.yml tasks)
  • GolangCI-Lint (for Go linting, see .golangci.yml)
  • Yamllint (for YAML linting, see .yamllint.yaml)
  • Checkmake (for Makefile linting)
  • Docker (for running Markdown linting via container)
  • Markdownlint (for Markdown linting, see .markdownlint.yaml)

Clone and Explore

git clone https://github.com/it-timo/goboot.git
cd goboot
make lint
# or, using Task
task lint

There’s not much output yet — but that’s intentional.


📚 Project Planning

This repository uses:

These documents evolve alongside the project.


⚖️ License

Licensed under the MIT License. See LICENSE. Includes attribution in NOTICE (if applicable).


🚧 Status

goboot is in pre-alpha. Intended for structural exploration and reproducible project setup. Not yet suitable for generating production-ready projects.


💖 Support This Project

If goboot helps you or saves you time, consider supporting its development:

No pressure — just a small way to say "thanks" if it brought you value.

About

Modern Go project generator for CLI, REST, and backend tools. Batteries included: clean structure, Docker, CI, and editor presets — ready in seconds.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

No packages published

Contributors 2

  •  
  •