THIS PAGE MOVED HERE: https://github.com/icza/gowut/wiki


Gowut (Go Web UI Toolkit) is a full-featured, easy to use, platform independent Web UI Toolkit written in pure Go, no platform dependent native code is linked or called.

The usage of the Gowut is similar to Google's GWT and the Java Swing toolkit. If you are familiar with those, you will get started very easily. The main difference compared to GWT is that this solution does not compile into JavaScript but remains and runs as Go code (on the server side). Remaining on the server side means you don't have to hassle with asynchronous event handlers like in GWT, you can write real synchronous event handlers (like in Java Swing).

You can use this toolkit and build user interfaces with writing Go code only: you can assemble the client interface in Go, and write event handlers in Go. You may optionally spice it and make it more customized with some HTML and CSS (also added from Go code), but that is not required.

The UI can be simply assembled hierarchically from containers and components. Components can generate events which are dispatched to event handlers - also written in pure Go. If there is no component for an HTML tag you wish to use, you can use the Html component to wrap your custom HTML code. Components also allow you to specify custom HTML attributes that will be added for their (wrapper) HTML tags.

Creating user interfaces using Gowut does not require you to think like that the clients will view it and interact with it through a browser. The "browser" layer is hidden by Gowut. While styling the components is done through CSS (either by calling the style builder's methods or passing direct CSS codes), think of it like a way similar to formatting HTML tags with CSS.

The state of the components are stored on server side, in the memory. This means that if a browser is closed and reopened, or you navigate away and back, the same state will be rendered again. AJAX technology is used to automatically synchronize component's state from browser to server, and to dispatch events.

AJAX technology is used also to refresh some parts (components) that change (during event handling) without having to reload the whole page to see the changes.

To quickly test it and see it in action, run the "Showcase of Features" application by typing: (assuming you're in the root of your GOPATH)

go run src/github.com/icza/gowut/_examples/showcase/showcase.go

Check out the live demo here: https://gowut-demo.appspot.com/show

Features of Gowut

  • A component library to assemble your user interfaces with
  • A GUI server which serves browser clients
  • Session management
  • Automatic event handling and dispatching
  • (CSS) Style builder to easily manipulate the style of components

Latest News

Latest News

  • Gowut v1.2.0 Changes and new features in v1.2.0:BREAKING CHANGES! Renamed several interfaces and methods to conform to Go naming conventions. Gometalinter now gives 0 warnings. Sorry. Better sooner than ...
    Posted Jan 16, 2017, 4:57 AM by András Belicza
  • Gowut v1.1.2 Changes and new features in v1.1.2:Many code optimization, code formatting and grammar fixing to have an A+ Go Report Card rating!
    Posted Sep 6, 2016, 4:54 AM by András Belicza
  • Gowut v1.1.1 Changes and new features in v1.1.1:Improvement: HTTP request and response writers are now exposed with Events. See issue #19.Not directly, but they are available after a ...
    Posted Jul 28, 2016, 1:23 AM by András Belicza
  • Gowut 1.1.0 Changes and new features in 1.1.0:A new SessMonitor component which can be used to monitor and display session timeout and network connectivity at the client side without ...
    Posted Mar 14, 2016, 3:04 PM by András Belicza
  • Gowut 1.0.0 Changes and new features in Gowut 1.0.0:Exported a new Writer which is used to render components.A value of this Writer is passed to Comp.Render().It ...
    Posted Mar 8, 2016, 8:47 AM by András Belicza
Showing posts 1 - 5 of 9. View more »

Further reading

Read the documentation here: Documentation

Check out a full application example here: Full App Example

Check out the godoc of Gowut here: http://godoc.org/github.com/icza/gowut/gwu

Bug reporting, issue tracking: https://github.com/icza/gowut/issues

Development takes place in the dev branch: https://github.com/icza/gowut/tree/dev

Discussion forum: https://groups.google.com/d/forum/gowebuitoolkit