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/code.google.com/p/gowut/examples/showcase.go

Check out the live demo here: Coming soon...

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 0.8.0 Changes and new features in 0.8.0:Significant event system improvements.Event types are now categorized. This category can be accessed with EventType.Category(). Events that existed before fall ...
    Posted Feb 19, 2013, 1:28 AM by András Belicza
  • Gowut 0.7.0 Changes and new features in 0.7.0:A new example application: "Showcase of Features".The application is written using Gowut (of course) and showcases the component library.You can ...
    Posted Feb 12, 2013, 4:16 AM by András Belicza
  • Gowut 0.6.0 Gowut 0.6.0 has been released!This is the first public release. Main features include:A component library to assemble your user interfaces withA GUI server which serves ...
    Posted Feb 4, 2013, 1:00 AM by András Belicza
Showing posts 1 - 3 of 3. 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/code.google.com/p/gowut/gwu

Bug reporting, issue tracking: http://code.google.com/p/gowut/issues/list

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