Skip to content
HN On Hacker News ↗

GitHub - NV404/gova

▲ 143 points 29 comments by aliezsid 2mo ago HN discussion ↗

Pangram verdict · v3.3

We believe that this document is fully AI-generated

88 %

AI likelihood · overall

AI
0% human-written 100% AI-generated
SEGMENTS · HUMAN 0 of 3
SEGMENTS · AI 3 of 3
WORD COUNT 562
PEAK AI % 95% · §1
Analyzed
Apr 24
backend: pangram/v3.3
Segments scanned
3 windows
avg 187 words each
Distribution
0 / 100%
human / AI fraction
Verdict
AI
Pangram v3.3

Article text · 562 words · 3 segments analyzed

Human AI-generated
§1 AI · 95%

The declarative GUI framework for Go. Build native desktop apps for macOS, Windows, and Linux from a single Go codebase — typed components, reactive state, real platform dialogs, and one static binary. No JavaScript runtime, no embedded browser, no C++ toolchain to learn.

Status: pre-1.0. The API will shift before v1.0.0. Pin a tag in production.

package main

import g "github.com/nv404/gova"

type Counter struct{}

func (Counter) Body(s *g.Scope) g.View { count := g.State(s, 0) return g.VStack( g.Text(count.Format("Count: %d")).Font(g.Title), g.HStack( g.Button("-", func() { count.Set(count.Get() - 1) }), g.Button("+", func() { count.Set(count.Get() + 1) }), ).Spacing(g.SpaceMD), ).Padding(g.SpaceLG) }

func main() { g.Run("Counter", g.Define(func(s *g.Scope) g.View { return Counter{} })) } Why Gova

Components as structs. Views are plain Go structs with typed prop fields; defaults are zero values; composition is plain function calls. No magic property wrappers, no string keys, no hook-ordering rules. Explicit reactive scope. State, signals, and effects live on a Scope you can see. No hidden scheduler, no re-render surprises, no Rx, no Redux. Real native integrations where it matters. NSAlert, NSOpenPanel, NSSavePanel, and NSDockTile badge/progress/menu on macOS through cgo. Fyne fallbacks on Windows and Linux — same API everywhere. One static binary. go build produces a single executable. No JavaScript runtime, no embedded browser, no extra assets to bundle. Hot reload that actually reloads. gova dev watches Go files, rebuilds on save, and relaunches — with an opt-in PersistedState so UI state survives the reload. Built on Fyne, but Fyne stays internal. The public API is yours to rely on. We swap out renderer details without breaking your code.

§2 AI · 79%

At a glance

Metric Value Notes

Binary size ~32 MB counter example, default build

Stripped ~23 MB go build -ldflags "-s -w"

Memory idle ~80 MB RSS, counter running

Go version 1.26+ plus a C toolchain for cgo

License MIT no runtime fees

Measured on macOS arm64 with Go 1.26.2. Numbers will vary by platform and feature set. Install go get github.com/nv404/gova@latest Optional CLI for dev / build / run: go install github.com/nv404/gova/cmd/gova@latest gova dev ./examples/counter Prerequisites: Go 1.26+ and a C toolchain (Xcode CLT on macOS, build-essential + libgl1-mesa-dev on Linux, MinGW on Windows). Docs Full documentation lives at gova.dev (or run npm run dev inside docs-site/ for local browsing). Key sections:

Getting started Core concepts State and effects Native dialogs Platform integration CLI

Examples Every example in examples/ is a runnable program:

Example What it shows

counter The minimum viable Gova app

todo State, lists, forms

fancytodo Categories, derived state, richer layout

notes Nav, multi-view, stores

themed Dark/light mode, semantic colors

components Viewable composition, ZStack, Scaffold

dialogs Native dialogs, dock badge / progress / menu, app icon

go run ./examples/dialogs Platform support

Feature macOS Windows Linux

Core UI Supported Supported Supported

Hot reload (gova dev) Supported Supported Supported

App icon (runtime) Supported Supported Supported

Native dialogs NSAlert / NSOpenPanel Fyne fallback Fyne fallback

Dock / taskbar NSDockTile Planned Planned

CLI The gova CLI ships alongside the framework.

§3 AI · 90%

Command Purpose Notes

gova dev Hot reload Watch .go files, rebuild on save, relaunch the window

gova build Compile Static binary to ./bin/<name>

gova run Execute Build and launch once, no file watching

Contributing See CONTRIBUTING.md. Tests are the contract: go test ./... Issues, discussions, and PRs all live on GitHub. Security issues? See SECURITY.md. License MIT. Gova is built on Fyne (BSD-3), which ships with the module as an internal dependency.