A new Go + HTMX project
I'm starting a full project with the Go + HTMX tech stack, and the learning has been really amazing. I have worked on Frontend projects for over 5 years, and I have used Next.js. I think this tech stack is meant to be a lightweight version of Next.js and a perfect replacement for its server-side features.
I'm starting a series of posts where I'll document the full learning process. In this post, I'm describing the project and its purpose.
Problem
Some time ago, I created a Restaurant Management System with 3 main features: Point of Sale (POS), Kitchen Display System (KDS), and Reservations. After launching the application in a closed beta test, some users requested some improvements and desired features.
The same feedback came from my 6 clients: "Can I share the menu with my customers?", and I wasn't prepared for it. I've been considering that option; however, the current application is an installable software for Windows, because that application was created for learning purposes some years ago. Over the years, I migrated the database from a local SQLite database to a MySQL instance deployed on my local server and publicly accessible from the Internet with a Cloudflare tunnel (for learning purposes as well).
Solution
Since the database is already served over the internet, I think I can pull the required data to create the public menu pages; I just need to add some additional information like the address, phone number, contact email, and tagline.
After a couple of weeks exploring the AI models with Claude and Codex, I'm developing the solution with AI, and the tech stack can be Golang (the main programming language I use for work) with HTMX.
Why Golang + HTMX
Golang can handle a huge amount of processes/requests with a single binary; it's very performant, and mostly this application only needs to handle static operations/transactions- no need to reconcile the app using JavaScript.
Since I'm thinking about migrating the whole app to the web and maybe a mobile application with Kotlin or Expo, after deep research and learning about HTMX, this simple tech stack can handle that migration.
The most complex operation here would be sending a notification when a new order is created and displaying it on the KDS module. However, we can simply implement it with a WebSocket.
The public pages will serve static HTML content, and there's no need to overkill it.