gooo

command module
v0.0.0-...-50fae98 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 15, 2013 License: MIT Imports: 7 Imported by: 0

README

Gooo

   _____
  / ____|
 | |  __  ___   ___   ___
 | | |_ |/ _ \ / _ \ / _ \
 | |__| | (_) | (_) | (_) |
  \_____|\___/ \___/ \___/

Go lang web app "framework" showcasing straightforward, no-magic, web development with the Go language. Includes batch template processing and interaction with postgresql databases, and Model-View architecture.

Quick Start

  • Make sure your GOPATH and GOROOT are set.
    • For help, run go help gopath
  • ./install
  • ./run
    • this performs the following commands:
    • go build
    • ./Gooo

Philosophy

  • Anti-magic
  • So simple, that it's complex.
  • So complex, that it works.
  • If it doesn't work, publish it.

Modular architecture

  • model
    • struct type
    • no special tags or fields, models are just Go structs
    • business logic - straightforward DB methods to be used in the view module
  • view
  • parses templates in tmpl/ folder and defines how they are rendered
  • uses html/template to parse and render
  • fetches rows from database as type Model interfaces
  • router
    • handles dynamic and static routes, request methods, main handler matches the request URL against the routes
    • middleware filters for restful routes
  • introspection
    • models implement interface{} and []interface{} types
    • Go's dynamic feature is interface type conversion, generally checked at runtime
    • Interface -> JSON interface{} -> []byte
    • Interface -> Struct []interface{} -> map[string]interface{}
    • GetStructValues interface{} -> []interface{}
    • InterfaceName: interface{} -> string
  • util
    • generic error handler HandlerErr(err error)

Martin Odersky

Tested and approved by Typeunsafe© Corporation


Tell me more...

Why Go?
Is it good?

Are you good?

Let's Gooo test the example blog app

  • resolve dependencies and install
    • ./install
    • don't want to use postgresql?
      • Sign up for a free Heroku Postgres account here.
      • Create a database and save the connection params for the next step.
      • Or skip this step
  • configure the database connection variable dbParams in the model package (model/model.go)
  • ./Gooo
  • http://localhost:8080/hello/world
  • Gooo celebrate
  • Gooo outside

Let's Gooo write your own Gooo app

  • resolve dependencies and install
    • ./install
    • don't want to use postgresql?
      • Sign up for a free Heroku Postgres account here.
      • Create a database and save the connection params for the next step.
  • define your model interfaces and configure the database connection in the model package (model/model.go)
    • implement your model interface types with anonymous BaseModel field
      • use `json:"-"` for type safety and Go lang future proofing
    • implement functions and variables available to all models with anonymous BaseModel field in the Model interface type
  • define your views as request handler functions in the view package (view/view.go)
  • write your templates in tmpl/ (Go text/template syntax)
  • define routes in main package gooo.go
  • ./Gooo
  • http://localhost:8080/hello/world
  • Gooo celebrate
  • Gooo outside

Gooo read these


Gopher


Enjoy,

- Aaron Lifton

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL