Skip to content

amaudy/Gooo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gooo

Pronunciation: /ɡoʊʊʊ/

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.

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
    • embedded Modeller interface through BaseModel struct
  • view
  • parses templates in tmpl/ folder and defines how they are rendered
  • uses html/template to parse and render
  • handles routes
  • fetches rows from database as type Model interfaces
  • conversion
    • 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)

Tell me more...

Why Go?

Is it good?

Are you good?

Let's Gooo test the example blog app

  • resolve dependencies
    • go get https://github.com/bmizerany/pq (pure Go postgres driver for database/sql)
    • don't want to use postgresql? Use it anyway.
      • Sign up for a free Heroku Postgres account here.
      • Create a database and save the connection params for the next step.
  • configure the database connection variable dpParams in the model package (model/model.go)
  • go install iff first build
  • go build && ./gooo
  • http://localhost:8080
  • Gooo celebrate
  • Gooo outside

Let's Gooo write your own Gooo app

  • resolve dependencies
    • go get https://github.com/bmizerany/pq (pure Go postgres driver for database/sql)
    • don't want to use postgresql? Use it anyway.
      • 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
  • go install iff first build
  • go build && ./gooo
  • http://localhost:8080
  • Gooo celebrate
  • Gooo outside

Gooo read these


Enjoy,

- Aaron Lifton

About

Go lang web app "framework" showcasing straightforward, no-magic, web development

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published