Abstract

WebForms Core introduces a novel command-based architecture that replaces traditional DOM diffing with a Command Flow model. Instead of synchronizing UI state through virtual DOM comparisons or RESTful data contracts, WebForms Core transmits compact semantic commands from server to client.

This article demonstrates how WebForms Core can be used in Go (Golang) to manage structured and unstructured data—including INI, Text, JSON, XML, and Variables—using the Format Storage abstraction

Architectural Overview

WebForms Core operates on three fundamental principles:

  1. Command Flow instead of Diffing

  2. Unified Format Storage for multiple data models

  3. Client-side interpretation of server commands

This design eliminates the need for:

The server remains the single source of truth, while the client acts as an interpreter and executor.

By transmitting only semantic UI commands instead of full state representations, WebForms Core significantly reduces network payload size, eliminates client–server state mirroring, and enables deterministic UI updates with minimal synchronization overhead.

Format Store Abstraction

Format Store provides a unified, extensible mechanism for managing structured and semi-structured data formats, including:

Each format is manipulated through a consistent command interface, allowing format-agnostic UI rendering and data querying.

The Format Store feature is introduced in version 2 of the WebForms Core technology.

Core Go Example Explained

HTTP Server and WebForms Initialization

func main() {
	http.Handle("/script/", http.StripPrefix("/script/", http.FileServer(http.Dir("script"))))
	http.HandleFunc("/", handleForm)
	http.ListenAndServe(":8080", nil)
}

The Go application acts as a pure command generator:

The server returns:

  1. Static HTML

  2. A WebForms command stream injected via ExportToHtmlComment

Creating and Using JSON Format Storage

form := new(webforms.WebForms)
fe := &webforms.Fetch{}
form.CreateFormatStorage("fs_json", "{}")

"FormatStorage" is an abstract, named container for structured data.

Here, "fs_json" is initialized as a JSON object.

Adding and Updating JSON Data

form.AddJSON("fs_json", "user.name", "Adriano")
form.AddJSON("fs_json", "user.age", "30")
form.AddJSON("fs_json", "settings.theme", "dark")

Key characteristics:

Updating values:

form.UpdateJSON("fs_json", "user.age", "31")
form.UpdateJSON("fs_json", "settings.theme", "light")

Deleting and Querying JSON

form.DeleteJSON("fs_json", "settings.theme")
form.SetValue("query", fe.FormatStoreByJSONQuery("fs_json", "user.name"))

The Fetch engine extracts data from the storage without exposing it directly to JavaScript.

Rendering Without Manual DOM Access

form.SetText("<textarea>", fe.FormatStore("fs_json"));

The selector-based targeting allows bulk UI updates without diffing or virtual DOM logic.

Full code

package main

import (
	"fmt"
	"your-project-name/webforms"
	"net/http"
)

func main() {
	http.Handle("/script/", http.StripPrefix("/script/", http.FileServer(http.Dir("script"))))
	http.HandleFunc("/", handleForm)
	http.ListenAndServe(":8080", nil)
}

func handleForm(w http.ResponseWriter, r *http.Request) {
	form := new(webforms.WebForms)
	
	//JSON
	// Create a JSON storage
	form.CreateFormatStorage("fs_json", "{}")
	fe := &webforms.Fetch{}

	// Add values
	form.AddJSON("fs_json", "user.name", "Adriano")
	form.AddJSON("fs_json", "user.age", "30")
	form.AddJSON("fs_json", "settings.theme", "dark")
	
	// Output
	form.SetText("<textarea>", fe.FormatStore("fs_json"))

	// Update existing value
	form.UpdateJSON("fs_json", "user.age", "31")
	form.UpdateJSON("fs_json", "settings.theme", "light")
	
	// Output after update
	form.SetText("<textarea>1", fe.FormatStore("fs_json"))

	// Delete one field
	form.DeleteJSON("fs_json", "settings.theme")
	
	// Output after delete
	form.SetText("<textarea>2", fe.FormatStore("fs_json"))

	// Fetch a JSON value: user.name
	form.SetValue("query", fe.FormatStoreByJSONQuery("fs_json", "user.name"))
	
	// Set width and height
	form.SetWidthInt("<textarea>*", 500)
	form.SetHeightInt("<textarea>*", 50)
	
	fmt.Fprint(w, `<!DOCTYPE html>
<html>
<head>
  <title>Using WebForms Core</title>
  <script type="module" src="/script/web-forms.js"></script>
</head>
<body>
	<h1>WebForms Core in GO</h1>
	<h2>Format Storage:</h2>
    <main>
		Output:
		<br/>
		<textarea></textarea>
		<br/>
		Output after update:
		<br/>
		<textarea></textarea>
		<br/>
		Output after delete:
		<br/>
		<textarea></textarea>
		<br/>
		<b>JSON Query: </b>
		<br/>
		<input type="text" id="query" />
    </main>
</body>
</html>` + form.ExportToHtmlComment(true))
}
format_storage_result

Other formats and capabilities

INI Format Storage

INI is treated as a structured format with sections and keys.

form.CreateFormatStorage("fs_ini", "[INI-example]")

form.AddINI("fs_ini", "Theme", "Dark")
form.AddINI("fs_ini", "App.Version", "1.0.0")
form.AddINI("fs_ini", "App.Name", "MyApp")

form.UpdateINI("fs_ini", "Theme", "Light")
form.DeleteINI("fs_ini", "App.Name")

form.SetText("query", fe.FormatStoreByINI("fs_ini", "Theme"))

form.SetText("<textarea>", fe.FormatStore("fs_ini"))

Explanation

Text Format Storage

form.CreateFormatStorage("fs_text", "Text Example")

form.AddTextLine("fs_text", 1, "Line 1")
form.AddTextLine("fs_text", 2, "Line 2")
form.AddTextLine("fs_text", 3, "Line 3")

form.UpdateTextLine("fs_text", 1, "Updated Line 2")
form.UpdateTextLine("fs_text", -1, "Updated Last Line")

form.DeleteTextLine("fs_text", 0)
form.DeleteTextLine("fs_text", -1)

form.SetText("query", fe.FormatStoreByText("fs_text", 1))

form.SetText("<textarea>", fe.FormatStore("fs_text"))

Explanation

Advanced JSON (Arrays & Nested Structures)

form.CreateFormatStorage("fs_json", "{}")

form.AddJSON("fs_json", "items[0]", "Apple")
form.AddJSON("fs_json", "items[1]", "Orange")
form.AddJSON("fs_json", "items[2]", "Banana")

form.AddJSON("fs_json", "user.hobbies[0]", "Music")
form.AddJSON("fs_json", "user.hobbies[1]", "Game")

form.UpdateJSON("fs_json", "items[1]", "Orange Updated")
form.DeleteJSON("fs_json", "user.hobbies[0]")

form.SetText("query", fe.FormatStoreByJSONQuery("fs_json", "items[2]"))

form.SetText("<textarea>", fe.FormatStore("fs_json"))

Explanation

XML Format Storage

form.CreateFormatStorage("fs_xml", "<root></root>")

form.AddXML("fs_xml", "/root", "User")
form.AddXML("fs_xml", "/root/User", "Name", "Ali")
form.AddXML("fs_xml", "/root/User", "Age", "30")

form.AddXML("fs_xml", "/root/User", "@Gender", "Male")

form.UpdateXML("fs_xml", "/root/User/Name", "Sara")
form.UpdateXML("fs_xml", "/root/User/@Gender", "Female")

form.DeleteXML("fs_xml", "/root/User/Age")
form.DeleteXML("fs_xml", "/root/User/@Gender")

form.SetText("query", fe.FormatStoreByXMLQuery("fs_xml", "/root/User/Name"))

form.SetText("<textarea>", fe.FormatStore("fs_xml"))

Explanation

Variables (State Without JSON)

form.AddVariable("fs_Counter", "10")
form.AddVariable("fs_Message", "Hello")

form.UpdateVariable("fs_Message", "Hello World")

form.IncreaseVariable("fs_Counter", 5)
form.DecreaseVariable("fs_Counter", 3)

form.DeleteVariable("fs_Message")

form.SetValue("txtCounter", fe.FormatStoreByVariable("fs_Counter"))

Explanation

Sending Format Storage data with SendBack mechanism

One of the new features of version 2 of WebForms Core technology is the "SendBack" mechanism.

The "SendBack" method removes dependency on the "application/x-www-form-urlencoded" content type by enabling structured command-based data submission. This mechanism supports advanced scenarios such as:

Example:

form.SetSendEvent("Button1", "onclick", fe.FormatStore("fs_json"), "/api/json", "PUT", false, "JSON")

In this example, the "SetSendEvent" method shows how sending data from the UI to the server can be done without writing a single line of JavaScript. By simply defining a high-level directive, the developer specifies that when a DOM event occurs (such as "onclick" on a button), the content of a specified Format Store ("fs_json") is read, serialized into a structured form (here JSON), and sent to a specified server route using the specified HTTP method. All the usual steps, including collecting data, constructing the payload, setting headers, and executing the request, are automatically performed by WebForms Core.

The highlight of this approach is the complete removal of the dependency on custom JavaScript. In traditional architectures, sending data always requires hand-coding with "fetch" or similar libraries and maintaining state synchronization logic with the UI. In contrast, WebForms Core uses a declarative-like model to define the event, data, and destination in a single statement. This not only greatly reduces complexity, but also results in code that is more readable, maintainable, and independent of front-end frameworks—a feature that is of great scientific and practical importance for designing scalable and stable web systems.

How to use WebForms Core technology?

Two steps are required:

<script type="module" src="/script/web-forms.js"></script>

Get the WebFormsJS script from the following link: https://github.com/webforms-core/Web_forms/

Get the WebForms class associated with the server programming language from the following link: https://github.com/webforms-core/Web_forms_classes

Conclusion

Unlike component-based frameworks such as React or Blazor, WebForms Core does not rely on client-side state reconciliation.

WebForms Core introduces a novel paradigm for web application architecture, where UI state, data manipulation, and rendering are unified under a compact command language.

Its Go implementation demonstrates that this model is language-agnostic, scalable, and suitable for modern high-performance web systems.