Files
via/README.md
2025-10-31 01:46:58 -01:00

82 lines
1.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ⚡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 its 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.