gtag('config', 'G-0PFHD683JR');
Price Prediction

Why did you get rid of JavaScript and built a Saas pile with HTMX, Go & Postgres only working

introduction

Recently, I started creating applications using a web staple:

I have now built two applications using this stack, one of them runs banterbus.games Browser -based parties game (currently broken). Using web sockets, so it is not the most natural web application. Where there are a few dribbling of web sockets.

Joking Bus Code: https://gitlab.com/hmajid2301/banterbus

I currently build a more natural Crud app, called Voxice (https://voxice.app), which is a Saas platform to collect user notes and acting. The first time, I am trying to build something I will impose on others (so the code has also not been open source yet). Another context here: https://hassebmajid.dev/posts/2025-03-03-GEDBACK-YY-NEW-SIDE-PROJECT/

In this article, I moved to the reason for my admiration for this technological group a lot. Essentially, because I want to keep things as simple as possible. Another thing to be noticed, I am a back developer, and I don’t like to write the front facade icon. So this stack is designed to avoid writing the largest possible number of JS, that is, other developers who love to write. So read this article through these lenses. This stack may not be logical to you.

Interface

One of the problems I found in my side projects was that I would always lose the incentive when I had to write the front end code. For several reasons, I had no sufficient experience with frameworks such as React or Selfe to learn how to organize it. Therefore, they will quickly become a chaos.

Another issue is to maintain a consistent condition between the back front and the front end. If we lead everything from the back interface, we can keep most of our state there. What works well for a simple CRUD application that we build? The user interface does not need to do anything crazy or smart.

Tailwindcss

For design, I held with Tailwindcs for several years, some people hate it. I did not think about it. It leads to an enlarged class and makes HTML look more complex. But I have never held how to organize CSS. So I felt the supply that was always simpler for me.

Perhaps I have a set of refined styles and I can simplify what I have, as I am again I am not an expert in CSS nor an expert in the front end. But we can look at this if we feel that the front end is slow to load and so on.

Diziwi

I use this component library above Tailwindcs, which provides us with a set of components and topics that we can use outside the box. Directly to style and modification/change. I like it again, the rear end developer does the front end, so it may have more complex applications, you want to be your design system and create your own components better. But again, I really love how easy the front end is to develop for me.

Htmx

The front end is designed with HTMX, as a simple library, where most of our condition is from the back interface. The server returns HTML (opposite JSON) and then tells him about the place of replacement. See this HTMX request. When submitting the form, we send a postponed request to /feedback The end of the body is the input fields like Json. ((json-enc Extension turns it into Json for us). Then the goal means that HTML RTURN replaces the external HTML feedback_list

AlpineJS

I combined HTMX with AlpineJS, as some actions you don’t always want to go to the server. Like opening a modal, or accordion. I don’t use it a lot and maybe could refactor my site without it. But for now, it does help make things a bit simpler. Especially with Dynamic HTMX queries, which cannot be statically generated on the backend when we render the HTML template. See an example here: https://haseebmajid.dev/posts/2025-04-29-til-set-dynamic-url-with-htmx-and-alpinejs/

Backend

Go

I moved from Python to Go about 3 years ago and honestly haven’t looked back. I really liked statically typed languages. Again, each to their own, but I think having typed data just makes your life so much easier. I also really like the smaller, better devex around Go. Fast to compile. Compiles to single static binary. Easier to put into a scratch Docker image. Simple dependency management, go mod. The Cli Tool has a test runner (go test).

I really like the simplicity of Go, it is very easy to read the code and know what is going on. I tried to avoid using frameworks like the jinn, or gorilla. In the end, I used FUEGO, so I can create open API specifications.

I started writing Raw SQL with sqlcSo I know exactly what the query will do for guessing with Orman. I liked the use of ORMS and frames like Flask or Fastapi in Python, but I completely reflected my opinion on Go.

-- name: AddUser :one
insert into users (email) values ($1) returning *;

-- name: AddOrganization :one
insert into organizations (display_name, slug) values ($1, $2) returning *;

Then we can create a SQL icon by operation sqlc generate Which is born of the first -time code. We will use pgx As the main driver.

I use the common layer 3, the control unit (return HTML) -> the service layer (work logic) -> the store layer (DB).

Postgres

I remember that I really used to try different techniques such as Mongodb. But these days are dull for me. Such an entire stack, keep it simple, stupid. Unless you have a good reason, just use postgres. He works there a lot of tools around it. For some cases, JSON storage and inquiring about JSON, it surpasses Mongodb.

Devex

A few points on the Devex Part, I really love Gitlab Ci, I host the contestants. So the speed/minute running out is not a problem. I just know it. I use it side by side go-task (Taskfiles), which was found simpler.

Finally, if you know me, I always like to mention Nix, the project is prepared to use Nix Dev shells for all the consequences other than GO, and then we have Dev env and Ci Env really. See more: https://www.youtube.com/watch?

This is about that! This is my high -level experience and a reason to go with this SAAS technology group. I may go into more details about the statute that I chose to help ratify and how I intend to do the license but now, this is a good starting point.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button