My setup - Golang, Vue and Tailwind

April 2022

In the last couple of years, I have found a sweet spot between Golang on the server (Gofiber), and Vue on the frontend - in combination with Tailwind css. All tied together with Inertia JS, making it both blasting fast to run, and blasting fast to develop.

I see that the standard web setup for modern web is a React frontend, supported with a backend written in PHP, Java, Node, or any other backend technology - running in the cloud. I would not say this is a bad setup. I just think that this is not always the way to go. At least if the web app is not a huge, micro service-based multi million simultant-user web app.

Gofiber - performance on speed

Golang is a great choice for web backends. Maybe one of the best options out there? There are quite a few web frameworks written in Golang, and most of them are also relatively small - compared to frameworks typical found for other languages. I have tried a few of them, but I found that Gofiber gave me most of the functionality I needed, and also easy to use. Since I came from Laravel written in PHP, I took the file structure and naming conventions typical found in Laravel, and implemented this in Gofiber. I am amazed of the low memory usage, and the high performance Gofiber gives.

Vue - create interactive user interfaces, with standard html and css

I have been using Vue the last 2 years, and for me it just makes more sense than React and Angular. I felt at home the first time i tried Vue, and I am nowhere close to be as comfortable in React, even when working with React all day in my day to day job.

Tailwind CSS - the modular CSS framework

I have tried so many CSS frameworks out there, I have stopped counting. Most of them are good, but I always feels they are taking up too much space - some way or the other. When I tried Tailwind CSS for the first time, I knew the component structure of the framework was the way I wanted to proceed. You include classes, not writing css. I think it really makes sense in combination with a frontend framework like Vue of React, simply because it makes it much more useful to isolate elements in components.

Inertia.js - the modern monolith

Inertia.js let you build moderne single page web apps without having to write an API. For me, this is the most important reason for using Inertia.js. Not that it is hard to write the API in general, but in Inertia.js the frontend and the backend is written in the same project (great for bundling releases), and the frontend is fed with data - simply by returning the data to be displayed. How neat is that! Another great set of features, are all the backend features we all got used to in the 90s and early 2000 - like redirects, 404s, session based auth, this simply just work in Inertia.js just as it used to. I know there are solutions for this in a typical separated frontend / backend setup, but for me it feels so wrong to let the frontend have to deal with all of this. Inertia.js let you keep the backend as the hero, and the frontend just for displaying data.

This is not a perfect setup for all use cases, but I think a lot of web projects would benefit from a similar setup - to remove some of the overhead a typical frontend / backend app is written today. When writing a new project, time to marked, or time to prototyping is really important. This setup makes prototyping a breeze.

Want to test it out? Check out Larafiber.

tl;dr

The combination of Golang (Gofiber), Vue, Tailwind CSS together with Inertia.js is a killer combination for smaller web apps, as it brings down complexity.