ryanhamamura 9a23188973 feat: add cookie-based session support using alexedwards/scs (#1)
- Add Session wrapper with typed getters (GetString, GetInt, GetBool, etc.)
- Add flash message support via Pop methods (PopString, PopInt, etc.)
- Add session utilities: Exists, Keys, ID, Clear, Destroy, RenewToken
- Create default session manager in New() for zero-config usage
- Allow custom session manager via Options.SessionManager
- Wrap mux with scs LoadAndSave middleware in Start()
- Add session example demonstrating login/logout with flash messages
2026-01-09 06:59:26 -10:00
2025-11-18 12:09:56 -01:00
2025-11-13 14:39:37 -01:00
2025-10-26 00:49:55 +00:00
2025-11-17 17:26:10 -01:00

Via

Real-time engine for building reactive web applications in pure Go.

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.
  • Built-in Brotli compression.
  • Pure Go.

Example

package main

import (
	"github.com/go-via/via"
	"github.com/go-via/via/h"
)

type Counter struct{ Count int }

func main() {
	v := via.New()

	v.Page("/", func(c *via.Context) {
		data := Counter{Count: 0}
		step := c.Signal(1)

		increment := c.Action(func() {
			data.Count += step.Int()
			c.Sync()
		})

		c.View(func() h.H {
			return h.Div(
				h.P(h.Textf("Count: %d", data.Count)),
				h.Label(
					h.Text("Update Step: "),
					h.Input(h.Type("number"), step.Bind()),
				),
				h.Button(h.Text("Increment"), increment.OnClick()),
			)
		})
	})

	v.Start()
}

🚧 Experimental

Via is still a newborn. Via is taking its first steps!

  • Version 0.1.0 released.
  • Expect a little less chaos.

Contributing

  • Via is intentionally minimal and opinionated — and so is contributing.
  • If you love Go, simplicity, and meaningful abstractions — Come along for the ride!
  • Fork, branch, build, tinker with things, submit a pull request.
  • Keep every line purposeful.
  • Share feedback: open an issue or start a discussion.

Credits

Via builds upon the work of these amazing projects:

  • 🚀 Datastar - The hypermedia powerhouse at the core of Via. It powers browser reactivity through Signals and enables real-time HTML/Signal patches over an always-on SSE event stream.
  • 🧩 Gomponents - The awesome project that gifts Via with Go-native HTML composition superpowers through the via/h package.

Thank you for building something that doesnt just function — it inspires. 🫶

Description
Reactive real-time web engine for Go
Readme MIT 15 MiB
v0.23.0 Latest
2026-02-20 21:38:03 +00:00
Languages
Go 97.6%
CSS 1.2%
JavaScript 0.7%
Shell 0.5%