Experimenting with Full Stack Development in Go — Part 1: Setting the Scene

Seán Murphy
2 min readMay 6, 2020

Advances in WebAssembly have made it possible to consider using languages other than Javascript (with node naturally) for so-called Full Stack Development — developing both the backend and frontend components of an application. This has been recognized by Microsoft with their very promising Blazor toolkit but has also been recognized more generally. In this short series of posts I describe my experience developing a simple application using Go for a simple application on both the frontend and the backend.

As this was simply an experiment, I wanted to understand what was involved in creating a simple todo app with the usual functionality: creation of todos, editing and deleting todos and marking todos as done. I wanted to have a reactive frontend which contained some local state but persisted the data to a backend hosted on AWS via a REST API.

At the outset, I suspected that this was all doable — that the technologies existed and were (more or less) sufficiently mature, but that piecing them together would be somewhat clunky and would involve gaining some interesting insights and perspectives which are worth sharing.

I did some digging and settled on the following components as the basis for the development:

  • Go 1.14.1 — at the time of writing that was the newest version of the Go compiler; it supports the most advanced version of the syscall/jslibrary
  • vecty — a go module which supports manipulation of the DOM when compiled down to WASM
  • Swagger/OpenAPI 2 for definition of the REST API
  • AWS services for the backend: Lambda, API Gateway and DynamoDB

These are quite natural choices and there is a reasonable amount of content on these different components which has already been published. Here, I focus on bringing it all together and adding my perspective.

This short series of blog posts describes my experiences setting this up — it comprises of 4 posts (including this one) — the posts are:

The github repo which contains all the code is here.

--

--

Seán Murphy

Tech Tinkerer, Curious Thinker(er). Lost Leprechaun. Always trying to improve.