g-sui Framework
Server-rendered UI framework for Go. All HTML generation, business logic, and state management occur on the server. Interactivity achieved through server actions and WebSocket patches.
Quick Start
package main
import "github.com/michalCapo/g-sui/ui"
func main() {
app := ui.MakeApp("en")
app.Page("/", func(ctx *ui.Context) string {
return app.HTML("Home", "bg-gray-100",
ui.Div("p-8")(
ui.Div("text-2xl font-bold")("Hello World"),
),
)
})
app.Listen(":8080")
}
Documentation Index
| Topic |
File |
Description |
| Core Concepts |
CORE.md |
Architecture, Context, Actions, Targets, server rendering |
| UI Components |
COMPONENTS.md |
Buttons, inputs, forms, tables, alerts, cards, tabs, etc. |
| Data Management |
DATA.md |
Data collation, search, sort, filter, pagination, Excel export |
| Server Setup |
SERVER.md |
App initialization, routes, WebSocket, PWA, assets |
| Best Practices |
PATTERNS.md |
Testing, validation, security, state management |
Core Philosophy
- Server-Centric Rendering - All HTML generated server-side as strings
- String-Based Components - Components are Go functions returning HTML strings
- Action-Based Interactivity - User interactions trigger server handlers returning HTML
- WebSocket-Enhanced - Real-time updates via
/__ws endpoint
Key Types
type Callable = func(*ui.Context) string // All handlers return HTML
type Attr struct { ID, Class, Value, OnClick, OnSubmit, ... } // HTML attributes
Common Imports
import "github.com/michalCapo/g-sui/ui"
Development Commands
go run examples/main.go # Run example app
go test ./... # Run all tests
go test ./ui/... # Test UI package
go build # Build project
./deploy # Create and push new version tag
Releases
To create a new version release:
./deploy
The deploy script automatically:
- Starts at version
v0.100 if no tags exist
- Increments the minor version by 1 (e.g.,
v0.100 → v0.101 → v0.102)
- Ensures working tree is clean before tagging
- Creates an annotated git tag and pushes to remote
Version numbering: v0.XXX format, auto-incremented from v0.100.
1---2name: g-sui3description: Server-rendered Go UI framework. Use when building g-sui applications, creating UI components, handling forms with server actions, using data tables, setting up routes, or implementing WebSocket patches. Triggered by "g-sui", "server-rendered UI", "Go UI framework", form handling, or data collation.4---5
6# g-sui Framework
7
8Server-rendered UI framework for Go. All HTML generation, business logic, and state management occur on the server. Interactivity achieved through server actions and WebSocket patches.
9
10## Quick Start
11
12```go
13package main
14
15import "github.com/michalCapo/g-sui/ui"
16
17func main() {
18 app := ui.MakeApp("en")
19
20 app.Page("/", func(ctx *ui.Context) string {
21 return app.HTML("Home", "bg-gray-100",
22 ui.Div("p-8")(
23 ui.Div("text-2xl font-bold")("Hello World"),
24 ),
25 )
26 })
27
28 app.Listen(":8080")
29}
30```
31
32## Documentation Index
33
34| Topic | File | Description |
35|-------|------|-------------|
36| Core Concepts | [CORE.md](CORE.md) | Architecture, Context, Actions, Targets, server rendering |
37| UI Components | [COMPONENTS.md](COMPONENTS.md) | Buttons, inputs, forms, tables, alerts, cards, tabs, etc. |
38| Data Management | [DATA.md](DATA.md) | Data collation, search, sort, filter, pagination, Excel export |
39| Server Setup | [SERVER.md](SERVER.md) | App initialization, routes, WebSocket, PWA, assets |
40| Best Practices | [PATTERNS.md](PATTERNS.md) | Testing, validation, security, state management |
41
42## Core Philosophy
43
441. **Server-Centric Rendering** - All HTML generated server-side as strings
452. **String-Based Components** - Components are Go functions returning HTML strings
463. **Action-Based Interactivity** - User interactions trigger server handlers returning HTML
474. **WebSocket-Enhanced** - Real-time updates via `/__ws` endpoint
48
49## Key Types
50
51```go
52type Callable = func(*ui.Context) string // All handlers return HTML
53type Attr struct { ID, Class, Value, OnClick, OnSubmit, ... } // HTML attributes
54```
55
56## Common Imports
57
58```go
59import "github.com/michalCapo/g-sui/ui"
60```
61
62## Development Commands
63
64```bash
65go run examples/main.go # Run example app
66go test ./... # Run all tests
67go test ./ui/... # Test UI package
68go build # Build project
69./deploy # Create and push new version tag
70```
71
72## Releases
73
74To create a new version release:
75
76```bash
77./deploy
78```
79
80The `deploy` script automatically:
81- Starts at version `v0.100` if no tags exist
82- Increments the minor version by 1 (e.g., `v0.100` → `v0.101` → `v0.102`)
83- Ensures working tree is clean before tagging
84- Creates an annotated git tag and pushes to remote
85
86Version numbering: `v0.XXX` format, auto-incremented from `v0.100`.