How I use HTMX with Go

(alexedwards.net)

64 points | by gnabgib 3 hours ago

7 comments

  • nzoschke 53 minutes ago
    Love Go + HTMX. I pair it with a-h/templ for a bit more type safety on the template, components and partials.

    I just shared my whole toolkit too [1], I call it the "GUS stack" -- Go, Unix, SQLite. Inspired heavily by the exe.dev "GUTS" stack [2] but with HTMX instead of Typescript.

    Some other Go components in the kit...

    - cockroachdb/errors for errors with stack traces

    - templ for type-safe HTML templates (with htmx for reactivity and tailwindcss for CSS)

    - fuego for an OpenAPI spec generated from web handlers

    - sqlc for type-safe code generated from SQL

    - modernc.org/sqlite for a pure Go sqlite library

    - goose for SQL and Go migrations

    - dbos for durable workflows in SQLite

    - rod for Chrome / CDP testing and automation

    Feels so productive coding, agentic coding, and building and deploying binaries with this stack.

    [1] https://housecat.com/blog/the-gus-stack-go-unix-sqlite

    [2] https://exe.dev/docs/guts

    • nzoschke 24 minutes ago
      Could rebrand to the HUGS stack -- HTMX, Unix, Go, SQLite
  • sethops1 17 minutes ago
    We use this[1] little package, which enables chaining together HTMX responses that can be based on an HTML template file, an HTML raw string, or plain text. All but the first being OOB targets. Real example:

      return htmx.Write(w,
    
        &htmx.Template{
          FS:       htmx.FS(ui.HTMX, "parts"),
          Filename: "arrows.html",
          Fields:   []any{thread, up},
        },
    
        &htmx.Component{
          HTML: `
            <div {{$count := index . 0 -}} {{- $thread := index . 1 -}}
              hx-swap-oob=true
              id="points-{{$thread}}"
              class="points">{{$count}} points</div>`,
          Fields: []any{count, thread},
        },
    
      )
    
    [1] https://github.com/cattlecloud/webtools/tree/main/htmx
  • androiddrew 42 minutes ago
    I love Alex Edwards. His books and Learn go with tests were my first introduction to the language. Still recommend to this day.

    I'm feel inspired to convert some old stuff to HTMX

    • bbg2401 25 minutes ago
      Seconded on the Alex Edwards adoration. Anyone with the slightest interest in learning Go for web development should pick up both Let's Go and Let's Go Further. They are two of the most approachable, enjoyable and practical introductions to a programming language I've read.
  • xp84 59 minutes ago
    I used HTMX on a recent project and really enjoyed it. As a person who knows how the Web worked before the invention of AngularJS and React, I deeply appreciate being able to build actual pages and minimize the amount of JS that has to exist. Vanilla JS works fine, but HTMX basically just substitutes for a lot of boilerplate that you'd otherwise have to create just to do the same event handler stuff over and over.

    If you're curious, and you too aren't in love with the "Modern frontend" philosophy, I would recommend trying out HTMX. Of note, the first examples of HTMX on the HTMX site are really basic, but it's much more powerful with a bit more learning.

    • wasmperson 36 minutes ago
      > If you're curious, and you too aren't in love with the "Modern frontend" philosophy

      I'm also going to hesitantly mention sveltekit. From the outside it looks like yet another JS front-end framework but having been forced to use it recently I've learned it actually has great support for the more hypertext-focused design philosophy promoted by HTMX and friends.

  • pbjerkeseth 29 minutes ago
    HTMX is excellent. We made it a long way at Convictional[1] with HTMX + AlpineJS, but the eventual transition of our product into lots of live collaborative surfaces had us feeling like we had pushed the envelope as far as we could under modern startup constraints. Unfortunately, frontier models have really hurt development with budding tech that doesn't have the training data presence of things like React.

    [1] https://get.convictional.com/

  • _superposition_ 34 minutes ago
    Nice post. Gotta love the GOTH stack
    • defrost 29 minutes ago
      There's no other tool for extracting wasps from stings in flight.
  • typesafeJ 1 hour ago
    [dead]