Skip to content

luigimorel/gogen

Repository files navigation

gogen

A fast and simple CLI tool for generating Go project boilerplates.

Installation

Quick Install

# Build from source
git clone https://github.com/luigimorel/gogen.git
cd gogen
make build

Using Go Install

go install github.com/luigimorel/gogen@latest

Using the CLI (Self-Install)

After building or downloading the binary, gogen can install itself to your system PATH:

# Auto-detect best installation method for your system
./gogen install

# Force reinstallation if already installed
./gogen install --force

The install command supports:

  • Linux/macOS: Installs to ~/.local/bin with PATH configuration help
  • Windows: Installs to %USERPROFILE%\AppData\Local\gogen with PATH setup instructions
  • Auto-detection: Automatically chooses the best method for your system

Usage

Global Commands and Flags

gogen --help                # Show all available commands
gogen -h                    # Short form of help
gogen --version             # Show version information
gogen -v                    # Short form of version

Global Flags (Available for all commands)

Flag Short Description Default
--help -h Show help for the command false
--version -v Show version information false
--verbose Enable verbose output false

Create a New Project

The new command creates a new Go project with proper structure and initialization.

Basic Usage

Generate an API server (default):

gogen new --name my-project

Generate a CLI application:

gogen new --name my-cli --template cli

Generate a web server:

gogen new --name my-web-app --template web

Advanced Usage

Create a web project with React frontend:

gogen new --name my-fullstack --template web --frontend react

Create a web project with Vue.js and TypeScript:

gogen new --name my-vue-app --template web --frontend vue --ts

Create an API with Chi router:

gogen new --name my-api --template api --router chi

Create a fullstack project with Chi router, docker, bun runtime and React for the frontend:

gogen new --name my-app --docker --template web --router chi --ts

Specify custom module name and directory:

gogen new --name my-project --module github.com/username/my-project --dir custom-dir

New Command - All Flags

gogen new --help
Flag Short Description Default
--name -n Project name
--module -m Go module path project name
--template -t Project template (api, web, cli) "api"
--router -r Router type (stdlib, chi, gorilla, httprouter) "stdlib"
--frontend --fe Frontend framework (react, vue, svelte, etc.)
--dir -d Directory name for the project project name
--typescript --ts Use TypeScript for frontend projects false
--docker Create dockerfiles and dockercompose false

Available Templates

  • api (default) - REST API server with JSON responses
  • cli - CLI application using urfave/cli/v2
  • web - HTTP web server with optional frontend integration

Available Routers

  • stdlib (default) - Go standard library http.ServeMux
  • chi - Chi lightweight router with middleware support
  • gorilla - Gorilla Mux with advanced routing features
  • httprouter - High-performance HttpRouter

Available Frontend Frameworks

  • react - React with Vite build tool
  • vue - Vue.js with Vite
  • svelte - Svelte with Vite
  • solidjs - SolidJS with Vite
  • angular - Angular with Angular CLI

Install gogen to System PATH

The install command automatically installs gogen to your system PATH for easy access from anywhere.

# Auto-detect best installation method
gogen install

# Force reinstallation
gogen install --force

# Specify installation method
gogen install --method binary

Router Features

  • stdlib - Go standard library http.ServeMux with pattern matching
  • chi - Lightweight router with built-in middleware (Logger, Recoverer, RequestID)
  • gorilla - Full-featured router with path variables and advanced matching
  • httprouter - Ultra-fast router with zero memory allocation and path parameters

Frontend Framework Details

  • react - React 18+ with Vite, hot reloading, and modern tooling
  • vue - Vue 3 with Composition API, Vite, and TypeScript support
  • svelte - Svelte with SvelteKit and Vite integration
  • solidjs - SolidJS with fine-grained reactivity and Vite
  • angular - Angular with CLI, TypeScript, and modern build tools

Examples

Full-Stack Web Application

Create a complete full-stack application with Go backend and React frontend:

# Create web project with React frontend and all features
gogen new --name my-app --template web --frontend react --typescript \
  --router chi --cors --auth --logging --tailwind --testing

cd my-app

# Start the API server (in one terminal)
cd api
go run main.go

# Start the frontend dev server (in another terminal)
cd frontend
npm run dev

Microservice API

Create a high-performance API service with comprehensive features:

# Create API project with full microservice setup
gogen new --name my-service --template microservice --router gin \
  --module github.com/company/my-service --middleware --cors \
  --metrics --rate-limit --swagger --docker

cd my-service
go run main.go

# Test the API
curl http://localhost:8080/
curl http://localhost:8080/health

CLI Application

Create a comprehensive CLI tool:

gogen new --name my-cli --template cli --module github.com/company/my-cli

cd my-cli
go run main.go --help

Quick Reference

Commands

Command Description Example
gogen new Create a new project gogen new -n my-app -t web --fe react
gogen install Install gogen to PATH gogen install --force

Templates

Template Description Use Case
api REST API server Microservices, APIs, backends
web Web server Full-stack applications, websites
cli CLI application Command-line tools, utilities

Routers

Router Description Best For
stdlib Go standard library Simple applications, learning
chi Lightweight with middleware Most web applications
gorilla Full-featured router Complex routing requirements
httprouter High-performance High-throughput APIs

Frontend Frameworks

Framework Description TypeScript Build Tool State Management
react React 18+ Vite Redux, Zustand
vue Vue 3 Vite Pinia, Vuex
svelte Svelte/SvelteKit Vite Svelte stores
solidjs SolidJS Vite Built-in stores
angular Angular Angular CLI NgRx, Services

Development

Prerequisites

  • Go 1.21.13 or later
  • Make (optional, for build automation)
  • Node.js and npm (required for frontend features)

Building from Source

git clone https://github.com/luigimorel/gogen.git
cd gogen
make build

Development Workflow

# Run in development mode with hot reloading
make dev

# Run tests
make test

# Format and lint code
make check

# Build for all platforms
make build-all

Available Make Commands

  • make build - Build the application
  • make run - Build and run the application
  • make dev - Start development server with hot reloading
  • make test - Run tests
  • make fmt - Format code
  • make lint - Lint code
  • make vet - Vet code
  • make check - Run all code quality checks
  • make clean - Clean build artifacts
  • make build-all - Build for multiple platforms

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests and checks (make check test)
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Generate fullstack Go projects with a single command.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published