Skip to content
/ gen Public

Gen generates efficient web routing source code and documentation from annotations


Notifications You must be signed in to change notification settings


Repository files navigation

Gen - Tools for generating source code for microservices

Just write normal functions, and Gen generates efficient routing source code and documentation for it Because the source code is generated, none of this affects runtime performance
The differences caused by each change in the tool are shown directly in the generated source code
generating clients is also supported

Build Status Go Report Card GitHub license


'#' is the annotation, the annotation is the golang tag syntax, the only difference here is '#' wraps not '`'.

// ItemService #path:"/item/"#
type ItemService struct {}

// Create a Item #route:"POST /"#
func (s *ItemService) Create(item *Item) (err error) {}

// Update the Item #route:"PUT /{item_id}"#
func (s *ItemService) Update(itemID int /* #name:"item_id"# */, item *Item) (err error) {}

// Delete the Item #route:"DELETE /{item_id}"#
func (s *ItemService) Delete(itemID int /* #name:"item_id"# */) (err error) {}

// Get the Item #route:"GET /{item_id}"#
func (s *ItemService) Get(itemID int /* #name:"item_id"# */) (item *ItemWithID, err error) {}

// List of the Item #route:"GET /"#
func (s *ItemService) List(offset, limit int) (items []*ItemWithID, err error) {}
  1. Install gen tool go get -v
  2. Add gen tool to $PATH
  3. Start it gen run
  4. Open with your browser


Or try to quickly build services from scratch

  1. Make a directory mkdir -p $(go env GOPATH)/src/gentest
  2. Change directory cd $(go env GOPATH)/src/gentest/
  3. Define models
cat > models.go <<EOF
package gentest
type Gentest struct {
    Name string \`json:"name"\`
    Age  int    \`json:"age"\`
  1. Generated from CRUD template gen crud -t mock -n Gentest
  2. Start it GO111MODULE=off gen run gentest



Pouch is licensed under the MIT License. See LICENSE for the full license text.