Inspired by go-blueprint, I aim to develop a modern CLI tool that generates Go web projects. go-symphony produces Go applications utilizing the Gin framework, PostgreSQL database, and SQLC for type-safe queries. My motivation stems from exclusively employing Gin as an API server and PostgreSQL as my database, eliminating the need for alternative options. Having recently adopted Supabase extensively, I intend to integrate its capabilities into this project. Finally, as I use SvelteKit or Next.js to build the front-end, so I incorporate it into go-symphony.
Check out a video walkthrough of go-symphony in action: YouTube Demo
- π Modern Go Architecture: Clean project structure with best practices built-in
- π Gin Framework: High-performance HTTP web framework with httprouter
- ποΈ PostgreSQL Support: PostgreSQL with pgx driver for optimal performance
- π Type-Safe Queries: SQLC integration for compile-time SQL validation
- βοΈ Supabase Integration: Modern backend-as-a-service with auth and real-time features
- π³ Docker Ready: Optional Docker and docker-compose configuration
- β‘ Hot Reload: Air integration for development with live reload
- π§ͺ Testing Setup: Pre-configured testing with testcontainers
- π CI/CD: GitHub Actions workflows for testing and releasing
- π Frontend Integration: Optional SvelteKit and Next.js frontend generation
- π WebSocket Support: Real-time communication capabilities
go install github.com/Tomlord1122/go-symphony/v2@latestInstall a specific v2 release:
go install github.com/Tomlord1122/go-symphony/v2@v2.0.1Download the latest binary from GitHub Releases.
git clone https://github.com/Tomlord1122/go-symphony.git
cd go-symphony
go build -o go-symphony .- Go 1.23+ to build or run the CLI
- Git for
--git stageor--git commit - Docker for generated Postgres containers and Docker assets
- Supabase CLI for Supabase bootstrap flows
- Node.js / npx for SvelteKit or Next.js bootstrap flows
- pnpm if you want pnpm-based frontend installs
Use this when you want prompts:
go-symphony createUse advanced feature prompts:
go-symphony create --advancedUse this when scripting or working with an AI agent:
go-symphony create \
--name github.com/acme/my-api \
--driver postgres \
--feature sqlc \
--feature docker \
--frontend none \
--git skip \
--no-interactivego-symphony create \
--name github.com/acme/my-api \
--driver postgres \
--feature sqlc \
--frontend none \
--git skip \
--no-interactive \
--dry-runplan is the agent-friendly preview command. It validates the input and prints the scaffold steps without creating files.
go-symphony plan \
--name github.com/acme/my-api \
--driver postgres \
--feature sqlc \
--feature docker \
--frontend sveltekit \
--sveltekit-template minimal \
--sveltekit-types ts \
--sveltekit-package-manager pnpm \
--git skipBoth create --dry-run and plan support JSON output.
go-symphony plan \
--name github.com/acme/my-api \
--driver supabase \
--supabase-mode init-only \
--frontend none \
--git skip \
--output jsonUse --skip-install when you only want the scaffolded files and want to run dependency/bootstrap steps later.
go-symphony create \
--name github.com/acme/my-api \
--driver postgres \
--feature docker \
--frontend none \
--git skip \
--no-interactive \
--skip-installgo-symphony now works well in an AI-assisted workflow because it supports:
--no-interactivefor deterministic execution--dry-runfor previewing the scaffold planplanfor a dedicated planning step--output jsonfor machine-readable output--skip-installfor file generation without dependency/bootstrap side effects
Recommended AI workflow:
- Generate a plan first.
- Review the JSON or text output.
- Run
createwith the same flags. - Optionally run follow-up bootstrap steps yourself.
Example:
go-symphony plan \
--name github.com/acme/my-api \
--driver postgres \
--feature sqlc \
--feature githubaction \
--frontend none \
--git skip \
--output json
go-symphony create \
--name github.com/acme/my-api \
--driver postgres \
--feature sqlc \
--feature githubaction \
--frontend none \
--git skip \
--no-interactive \
--skip-installThere is also a reusable go-symphony skill definition available in the tomtom-skill repository:
../tomtom-skill/skills/go-symphony/SKILL.md
postgressupabasenone
sqlcdockergithubactionwebsocket
sveltekitnextjsnone
commitstageskip
init-onlylocal-db
Typical backend output:
your-project/
βββ cmd/api/main.go
βββ internal/
β βββ server/
β βββ database/
βββ Makefile
βββ README.md
βββ .env
βββ .air.toml
βββ .gitignore
Optional additions depend on selected features:
sqlc/for SQLC migrations and queriessupabase/for Supabase bootstrap files.github/workflows/for GitHub ActionsDockerfileanddocker-compose.ymlonly whenfeature=dockeris enabled<project>-frontend/for SvelteKit or Next.js
After generating a project:
cd your-project
# Start the generated Go server
make run
# Optional: start the Postgres container
make docker-run
# Optional: generate SQLC code
make sqlc-generate
# Optional: run tests
make test
# Optional: build the project
make buildIf you want generated Docker assets, include --feature docker when creating the project.
go-symphony create [flags]go-symphony plan [flags]go-symphony versionWe welcome contributions! Please see our contributing guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired and referenced by go-blueprint
- Built with Cobra CLI and Bubble Tea
- Claude CLI-inspired color scheme and user experience

