The Isomorphic Go Project

Go, across all environments

 

High Performance

On the server-side, Go code gets compiled to a native binary, and the machine executes it. There is no virtual machine eating up extra CPU cycles.

Search Engine Friendly

Isomorphic Go web apps provide the capability to define pretty URLs that can be easily indexed along with well-formed HTML content, that's readily consumable by bot crawlers.

Powerful Tooling

The Isomorphic Go toolkit provides powerful tooling to implement common functionality found in isomorphic web apps, such as client-side routing, isomorphic template rendering, and creating isomorphic web forms.

Launch the Demo

Here's a live demo of IGWEB, a web application created with Isomorphic Go. You can obtain the source code for the entire demo, and learn how to run it locally here.

 

What's Isomorphic Go?

Isomorphic Go is the methodology to create isomorphic web applications using the Go programming language.

Isomorphic web applications, are applications where the web server and the web browser (the client), may share all, or some parts of the web application code. Isomorphic web applications allow you to reap the maximum benefits from traditional web application architectures. They provide a better user experience, enhanced discoverability by search engines, and reduced operating costs by sharing parts of the web application code across environments.

Here's a live demo of IGWEB, a web application created with Isomorphic Go. You can obtain the source code for the entire demo, and learn how to run it locally here.

Here's an example of an Isomorphic Buffalo App created by Brian Ketelsen. Watch the video demonstrating the rendering of templates on both the server-side and the client-side.

 

Why make isomorphic web apps with Go?

JavaScript has been the most popular option to create truly isomorphic web applications. Now, a new option exists in Isomorphic Go.

Go is a modern programming language that's designed to be relevant in an age of multi-core processors and distributed systems. Unlike Node.js, back-end web server instances implemented in Go, are multi-threaded, using cheap, lightweight threads known as goroutines. Go's powerful concurrency constructs allow you to avoid callback hell, enabling you to create code that is more maintainable.

"If you're building a server, I can't imagine using anything other than Go."
— Ryan Dahl, Creator of Node.js

Go is a statically typed language unlike popular scripting languages such as JavaScript, Python, Ruby, and PHP. As a statically typed language, Go comes with the advantage that many problems can be discovered at compile time. The language also comes with type inference capabilities, giving Go the feel of a dynamic programming language along with the added benefit of type safety.

Go includes many features that allow developers to be highly productive. Go has a simple and terse syntax which promotes readability and maintainability. Go has an implicit build system, that automates dependency analysis, which eliminates the need to manually create and maintain build files. Go comes with a robust standard library, providing a lot of useful functionality, right out of the box.

Having a single, unified Go codebase, eliminates the mental context-shifts that come with juggling between two different programming languages on the back-end (Go, PHP, Java, Python, Ruby, etc) and the front-end (JavaScript). Isomorphic Go makes it possible to share parts of the application codebase, between the client and the server, allowing you to reuse code and avoid repetition.