# ⚡Via Pure Go reactive web framework. ## Why Via? Somewhere along the way, the web became tangled in layers of JavaScript, build chains, and frameworks stacked on frameworks. Via takes a radical stance: - No templates. - No JavaScript. - No transpilation. - No hydration. - No front-end fatigue. - Single SSE stream. - Full reactivity - Pure Go. ## Example ```go package main import ( "github.com/go-via/via" "github.com/go-via/via/h" ) type CounterState struct{ Count int } func main() { v := via.New() v.Page("/", func(c *via.Context) { s := CounterState{Count: 0} step := c.Signal(1) increment := c.Action(func() { s.Count += step.Int() c.Sync() }) c.View(func() h.H { return h.Div( h.P(h.Textf("Count: %d", s.Count)), h.Label( h.Text("Update Step: "), h.Input(h.Type("number"), step.Bind()), ), h.Button(h.Text("Increment"), increment.OnClick()), ) }) }) v.Start(":3000") } ``` > ⚠️Via is in it's infancy. Things will break often. ## Contributing - Via is intentionally minimal — and so is contributing. - If you love Go, precision, and small, meaningful abstractions — Come along for the ride. - Fork, branch, build, break things. - Follow the loop: Via → Context → State/Signals → View. - Keep every line purposeful. ## Credits Via builds upon the work of these amazing projects: - [Datastar](data-star.dev) - The hypermedia powerhouse powering Via's browser reactivity and real-time HTML and signal patches over a always-on SSE event stream. - [Gomponents](maragu.dev/gomponents) - The awesome project that enables Via's Go-native HTML UI composition through the `via/h` package.