Hakari — lightweight Go framework for UI apps, no CGo, no Node.js, one binary

Hi everyone,

I’ve built Hakari — a lightweight Go framework for building desktop applications and games with HTML, CSS, and JavaScript as the UI layer.

What it does

Hakari wraps the native WebView (via abemedia/go-webview) in a simple, ergonomic API:

  • Screens — each screen has its own HTML/CSS/JS, with state preserved between transitions
  • Data binding — Go and JavaScript share data through window.hakari
  • Events — call Go functions from JS, update JS from Go
  • Save/Load — JSON persistence in the OS config directory
  • File dialogs — open any file, served through a local HTTP server
  • Asset bundling — separate CSS/JS files are inlined into a single HTML at load time
  • Built-in DevTools — debug your UI like a web page

Why I made it

I tried Fyne, Wails, and Gio. Each solves part of the problem but creates a new one:

  • Fyne — awkward API, thread safety issues
  • Wails — pulls in Node.js and WebView2 SDK
  • Gio — steep learning curve, immediate-mode

What I wanted was: download → write HTML → write Go → run → it works. No dependencies, no bundlers, no configs.

Hakari is that. No CGo. No Node.js. One binary. Under 100 MB of RAM.

Why it’s useful

Compared to existing Go GUI options:

  • No CGo — cross-compilation works out of the box
  • No Node.js — no build step, no npm
  • One binary — all assets embedded via //go:embed
  • DevTools — debug your UI as a web page (Fyne/Gio don’t have this)
  • Familiar workflow — write HTML/CSS/JS like on the web

Project

  • GitHub: github [dot] com/Muchprow/hakari
  • Documentation: github [dot] com/Muchprow/hakari/blob/main/docs/BOOK.md
  • Demo: see examples/demo in the repo

Currently early development, but the core is working. I’d love feedback, especially from anyone who’s tried other Go GUI frameworks.

With love from Ukraine :ukraine: