docs: update readme

This commit is contained in:
Joao Goncalves
2025-10-31 01:44:19 -01:00
parent eb20a2a0a9
commit fc7d3b7638

View File

@@ -1,2 +1,89 @@
# via # ⚡Via
Real-time, reactive, hypermedia-driven, SSE-powered powerhouse that makes your UIs alive with minimal code. 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 (Server Sent Events) connection.
Full reactivity in the browser.
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.