For a while now, I have hated the term "Full Stack Web Developer" because it is too broad.
Yes, I call myself that because I can throw together two components and four lines of CSS, but the truth is that the back-end has my heart. The front-end has become too complex to maintain for a single developer like me who has more fun behind the scenes. I'm sure I'm not the only one, so here's my new favorite stack: HATE, introduced to me by Awesome with a brilliant video.
HTMX - Back to the AJAX
HTMX is a JavaScript library that allows you to use HTML attributes to intuitively govern AJAX requests, Server Side Events and Websocket connections without writing a line of JS.
The idea is to build web apps with HTML over-the-wire in an agile and HTML-first way, following the principle that the creators call "Locality of Behavior over Separation of Concerns" and taking advantage of a free "Server Side Rendering", since the client does little or nothing.
Here's an example of how it works:
<button hx-post="/clicked" hx-swap="outerHTML">Click Me</button>
This code tells HTMX:
"When a user clicks on this button, issue an HTTP POST request to "/clicked" and use the content from the response to replace the element with the id parent-div in the DOM".
Basically you can use the attributes hx-get, hx-post, hx-put, hx-delete and hx-swap to make your HTML elements interactive and reactive without explicit JS. It's the "return to monke" of web development, and I love it. 🦍
Alpine.js - JQuery for the modern web
A minimalistic (but not limited in functionality) collection of HTML attributes, properties and JavaScript methods to add reactivity and data binding without the compilation, bundling or shadow DOM typical of the most common frontend frameworks.
Making functional components with Alpine.js is as simple as adding three HTML attributes:
<div x-data="{ count: 0 }">
<button x-on:click="count++">Increment</button>
<p>Count: <span x-text="count"></span></p>
</div>
x-data initializes the data object, x-on binds events to methods and x-text binds data to the DOM.
So if we click the button, the count will increase and Alpine will update the text accordingly.
Turso - SQLite on Steroids
A managed database provider based on libSQL (a fork of SQLite), born to simplify data decentralization and developer experience with transactions via REST API.
It's a great tool for small projects or prototypes with a rock solid foundation, but its core feature is the ability to create hundreds of DBs (one per user is not a mad idea) that fully support replication to deliver incredible performance to enterprise apps too.
Echo - Fast and Minimalistic
I just love Go. Since using it for the first time at the start of the year, I've experimented a lot with it and as a script kid myself this powerhouse of a compiled language has completely replaced Python in my toolbelt.
Echo is a Go web framework that's lightweight, fast but above all very intuitive: an enhanced version of the already excellent web server included in the standard Go library.
Conclusion
These technologies have really helped me to develop small web applications with a modern look & feel in a short time and with a fraction of the complexity without sacrificing the evolutionary potential, so give it a try if you are curious!