g-sui
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.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
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("/", "Home", 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
/__wsendpoint - Multitenant Support - Multiple app instances with different URL prefixes
- Automatic Compression - Gzip compression for supported clients
Multitenant Apps (New in v0.111.17+)
Mount multiple isolated apps on different URL prefixes:
adminApp := ui.MakeApp("en")
publicApp := ui.MakeApp("en")
mainMux := http.NewServeMux()
adminApp.Mount("/admin", mainMux) // Routes at /admin/*
publicApp.Mount("", mainMux) // Routes at /*
http.ListenAndServe(":8080", mainMux)
Each app has isolated sessions, routes, and WebSocket connections (/admin/__ws, /__ws).
Performance Features (New in v0.111.16+)
-
Gzip Compression - Automatic for clients with
Accept-Encoding: gzip - Route Manifest Caching - Cached on first access, invalidated on route changes
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.100if 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.
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-03-03
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!