Scaffold any Go project — microservice, API, CLI, or AI agent — in seconds.
Pick a project type, framework, and addons. Get a fully wired, immediately runnable codebase dropped into your working directory.
Web UI · Docs · Contributing · Roadmap
go-initializer is a Go project scaffolding tool — the Go ecosystem's answer to Spring Initializr or create-react-app. In one command (or a few browser clicks), you get:
- A
go.modwired with every dependency you selected - Framework-specific
main.go, handlers, and router - A
Makefilewithbuild,run,tidy, andtesttargets - A multi-stage
Dockerfile(optional) - A
.gitignore, a starterREADME.md, and addon packages underinternal/
No manual boilerplate. No forgotten go mod tidy. Just code.
brew tap neo7337/goini
brew install goinigo install github.com/neo7337/go-initializer/cmd/goini@latestOpen https://go-initializer.dev in your browser and download a zip.
goini newThe CLI walks you through every option step-by-step via an interactive TUI.
Any flag you provide skips its corresponding prompt — making the command fully scriptable:
goini new \
--name myapp \
--module github.com/acme/myapp \
--description "A production microservice" \
--go-version 1.25.0 \
--type microservice \
--framework gin \
--addon cache=redis \
--addon database=gorm \
--addon other=zap \
--docker \
--output ./projects/The project is extracted directly into the output directory — no zip file left on disk.
curl -s -X POST https://go-initializer.dev/api/generate \
-H "Content-Type: application/json" \
-d '{
"name": "myapp",
"module": "github.com/acme/myapp",
"goVersion": "1.25.0",
"projectType": "microservice",
"framework": "gin",
"addons": [{"category":"cache","value":"redis"}],
"docker": true
}' --output myapp.zip1.25.0 · 1.24.6 · 1.23.12
| Project type | Frameworks |
|---|---|
| Microservice | Gin · Echo · Fiber · Golly · Go kit |
| API Server | Gin · Echo · Fiber · Chi · Golly |
| CLI App | Cobra · urfave/cli · Kingpin · Golly |
| Simple Project | Golly |
| AI Agent | LangChainGo · OpenAI · Gemini · Ollama |
| Category | Values |
|---|---|
cache |
redis · memcached |
database |
gorm · ent |
other |
zap · logrus · cobra |
ai |
openai · langchaingo · gemini · ollama |
vectorstore |
pgvector · chromem · qdrant |
| go-initializer | Manual setup | Other generators | |
|---|---|---|---|
| Interactive TUI | ✅ | ❌ | Varies |
| Web UI (zero install) | ✅ | ❌ | Rare |
| REST API | ✅ | ❌ | Rare |
| AI Agent scaffolding | ✅ | ❌ | ❌ |
| Vector store wiring | ✅ | ❌ | ❌ |
| Multi-stage Dockerfile | ✅ | Manual | Rare |
| Makefile included | ✅ | Manual | Rare |
| In-memory generation (no temp files) | ✅ | N/A | Varies |
| CI/scripted flag mode | ✅ | N/A | Rare |
| Self-hostable | ✅ | N/A | Rare |
Every project ships with:
go.mod— module declaration wired with all selected dependenciesmain.go— framework-specific entry point, handlers, and router.gitignore— binaries,vendor/,.env, IDE directoriesMakefile—build,run,tidy,testtargets ready to useREADME.md— next-step instructions tailored to the generated projectDockerfile(optional) — multi-stage build with minimal final imageinternal/cache/(optional) — Redis or Memcached client wiringinternal/database/(optional) — GORM or Ent client wiringinternal/logger/(optional) — Zap or Logrus setupinternal/ai/(optional) — LLM provider client + tool-calling scaffoldinternal/vectorstore/(optional) — pgvector, Qdrant, or chromem wiring
cd <name>
go mod tidy
make run # server / AI agent projects
make build # CLI projectsgoini new scaffold a new project (interactive or via flags)
goini list types print all supported project types
goini list frameworks print frameworks for a type (--type <t>)
goini list addons print all supported addon categories and values
goini version print version and build info
goini completion bash|zsh|fish print shell completion script
Run the full stack locally with Docker Compose:
docker-compose up --build| Service | Default port |
|---|---|
| Backend | :8182 |
| Frontend | :8001 |
See docs/how-to-self-host for environment variable reference and production deployment notes.
go-initializer/
├── cmd/
│ ├── goini/ # CLI binary (cobra + charmbracelet huh TUI)
│ └── server/ # HTTP server binary (Gin)
├── internal/
│ ├── generator/ # shared generation engine (used by both CLI and server)
│ └── server/ # HTTP layer, middleware, rate limiting
└── frontend/ # React + TypeScript web UI (Vite + Radix UI + Tailwind)
The CLI and web UI share the exact same internal/generator package — output is guaranteed identical regardless of which interface you use.
Contributions are welcome — bug reports, feature requests, documentation improvements, and code PRs alike.
- Read CONTRIBUTING.md for the dev setup and workflow
- Browse
good first issuefor beginner-friendly tasks - Open a Discussion for questions or ideas
Thanks to everyone who has contributed to go-initializer: