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
andGOROOT
are set.- For help, run
go help gopath
- For help, run
./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
- models implement
- util
- generic error handler
HandlerErr(err error)
- generic error handler
Tested and approved by TypeunsafeΒ© Corporation
Tell me more...
Why Go?
- Gophers
- Hip
- New
- Unproven
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
- use
- implement functions and variables available to all models with anonymous
BaseModel
field in theModel
interface type
- implement your model interface types with anonymous
- 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
Enjoy,
- Aaron Lifton