Add README quickstart section
All checks were successful
CI / build (pull_request) Successful in 28s

Provides a complete getting-started guide covering prerequisites,
app creation, HTML host setup, build commands, and running the app.

Closes #1

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-09 16:36:12 +01:00
parent 1129f1b43d
commit 46aa4cc502

104
README.md Normal file
View File

@@ -0,0 +1,104 @@
# Iris
WASM reactive UI framework for Go.
## Quickstart
Get from zero to a running app in under 5 minutes.
### Prerequisites
- Go 1.23 or later
- Copy the WASM support file: `cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" ./public/`
### Create your app
```go
//go:build js && wasm
package main
import (
"fmt"
"git.flowmade.one/flowmade-one/iris/reactive"
"git.flowmade.one/flowmade-one/iris/ui"
)
func main() {
count := reactive.NewSignal(0)
view := ui.NewView()
view.Child(ui.TextFromFunction(func() string {
return fmt.Sprintf("Count: %d", count.Get())
}))
view.Child(ui.Button(func() {
count.Set(count.Get() + 1)
}, ui.TextFromString("Click me")))
ui.NewApp(view)
// Keep the program running
select {}
}
```
### Create the HTML host
Create `public/index.html`:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Iris App</title>
<script src="wasm_exec.js"></script>
<script>
const go = new Go();
WebAssembly.instantiateStreaming(fetch("app.wasm"), go.importObject).then((result) => {
go.run(result.instance);
});
</script>
</head>
<body></body>
</html>
```
### Build
```bash
GOOS=js GOARCH=wasm go build -o public/app.wasm ./main.go
```
### Run
Create a simple server or use the built-in host:
```go
package main
import (
"net/http"
"git.flowmade.one/flowmade-one/iris/host"
)
func main() {
server := host.New("public", "index.html")
http.ListenAndServe(":8080", server)
}
```
Run it:
```bash
go run server.go
```
### Expected output
Open http://localhost:8080 in your browser. You should see:
- A "Count: 0" text
- A "Click me" button
- Clicking the button increments the count reactively