Rechercher

PythonReactSEOPDF
GitHub Skill

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.

michalCapo☆ 2 Étoiles du dépôt0 Forks du dépôt

Installation

Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.

Voir la source ↗Guides

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

  1. Server-Centric Rendering - All HTML generated server-side as strings
  2. String-Based Components - Components are Go functions returning HTML strings
  3. Action-Based Interactivity - User interactions trigger server handlers returning HTML
  4. WebSocket-Enhanced - Real-time updates via /__ws endpoint
  5. Multitenant Support - Multiple app instances with different URL prefixes
  6. 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.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.

Exemples

Consultez les exemples du dépôt source.

Voir la source ↗

Historique source

Date d’indexation
2026-01-20
Mise à jour de l’index
2026-03-03
Branch
main

Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!