Need help with go-app?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

maxence-charriere
5.4K Stars 258 Forks MIT License 1.1K Commits 37 Opened issues

Description

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

Services available

!
?

Need anything else?

Contributors list

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]

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.