All Projects → maxence-charriere → Go App

maxence-charriere / Go App

Licence: mit
A package to build progressive web apps with Go programming language and WebAssembly.

Programming Languages

go
31211 projects - #10 most used programming language
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Go App

Assortedwidgets
OpenGL GUI library
Stars: ✭ 92 (-98.36%)
Mutual labels:  wasm, gui
Sixtyfps
SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++ or JavaScript.
Stars: ✭ 605 (-89.21%)
Mutual labels:  wasm, gui
Iplug2
C++ Audio Plug-in Framework for desktop, mobile and web [PRE-RELEASE]
Stars: ✭ 875 (-84.39%)
Mutual labels:  wasm, gui
Made With Webassembly
A showcase of awesome production applications, side projects, and use cases made with WebAssembly (Wasm). 👷
Stars: ✭ 132 (-97.65%)
Mutual labels:  wasm, pwa
Woz
Woz is a progressive WebAssembly app (PWAA) generator for Rust.
Stars: ✭ 145 (-97.41%)
Mutual labels:  wasm, pwa
Webgui
An example demo of IMGUI (Immediate Mode GUI) on the web. Using only WebGL, GLFW and ImGui. Suitable for being compiled to web assembly (WASM).
Stars: ✭ 180 (-96.79%)
Mutual labels:  wasm, gui
Emberclear
Encrypted Chat. No History. No Logs.
Stars: ✭ 157 (-97.2%)
Mutual labels:  wasm, pwa
Yew
Yew is a modern Rust framework for creating multi-threaded front-end web apps with WebAssembly.
Stars: ✭ 18,243 (+225.36%)
Mutual labels:  wasm, gui
Preact Cli
😺 Your next Preact PWA starts in 30 seconds.
Stars: ✭ 4,510 (-19.56%)
Mutual labels:  pwa
Rust Sciter
Rust bindings for Sciter
Stars: ✭ 482 (-91.4%)
Mutual labels:  gui
Sol Journal
✎ Simple, personal journaling progressive web app
Stars: ✭ 470 (-91.62%)
Mutual labels:  pwa
Offline Plugin
Offline plugin (ServiceWorker, AppCache) for webpack (https://webpack.js.org/)
Stars: ✭ 4,444 (-20.74%)
Mutual labels:  pwa
Genact
🌀 A nonsense activity generator
Stars: ✭ 5,109 (-8.88%)
Mutual labels:  wasm
Eosio.cdt
EOSIO.CDT (Contract Development Toolkit) is a suite of tools used to build EOSIO contracts
Stars: ✭ 471 (-91.6%)
Mutual labels:  wasm
Qt.go
Qt binding for Go (Golang) aims get Go's compile speed again.
Stars: ✭ 487 (-91.31%)
Mutual labels:  gui
Asmble
Compile WebAssembly to JVM and other WASM tools
Stars: ✭ 466 (-91.69%)
Mutual labels:  wasm
Blazorfluentui
Port of FluentUI/Office Fabric React components and style to Blazor
Stars: ✭ 467 (-91.67%)
Mutual labels:  wasm
Awesome Wasm Runtimes
A list of webassemby runtimes
Stars: ✭ 490 (-91.26%)
Mutual labels:  wasm
Pydebloatx
Python GUI for uninstalling the default Windows 10 apps.
Stars: ✭ 487 (-91.31%)
Mutual labels:  gui
Pmtech
Lightweight, multi-platform, data-oriented game engine.
Stars: ✭ 478 (-91.47%)
Mutual labels:  wasm

go-app

Circle CI Go build Go Report Card GitHub release pkg.go.dev docs Twitter URL

Go-app is a package for building progressive web apps (PWA) with the Go programming language (Golang) and WebAssembly (Wasm).

Shaping a UI is done by using a declarative syntax that creates and compose HTML elements only by using the Go programing language.

It uses Go HTTP standard model.

An app created with go-app can out of the box run in its own window, supports offline mode, and are SEO friendly.

Documentation (built with go-app)

go-app documentation

Install

go-app requirements:

go mod init
go get -u github.com/maxence-charriere/go-app/v9/pkg/app

Declarative syntax

Go-app uses a declarative syntax so you can write reusable component-based UI elements just by using the Go programming language.

Here is a Hello World component that takes an input and displays its value in its title:

type hello struct {
	app.Compo

	name string
}

func (h *hello) Render() app.UI {
	return app.Div().Body(
		app.H1().Body(
			app.Text("Hello, "),
			app.If(h.name != "",
				app.Text(h.name),
			).Else(
				app.Text("World!"),
			),
		),
		app.P().Body(
			app.Input().
				Type("text").
				Value(h.name).
				Placeholder("What is your name?").
				AutoFocus(true).
				OnChange(h.ValueTo(&h.name)),
		),
	)
}

Standard HTTP

Apps created with go-app complies with Go standard HTTP package interfaces.

func main() {
	// Components routing:
	app.Route("/", &hello{})
	app.Route("/hello", &hello{})
	app.RunWhenOnBrowser()

	// HTTP routing:
	http.Handle("/", &app.Handler{
		Name:        "Hello",
		Description: "An Hello World! example",
	})

	if err := http.ListenAndServe(":8000", nil); err != nil {
		log.Fatal(err)
	}
}

Getting started

Read the Getting Started document.

Built with go-app

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain go-app development. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].