Popularity
9.3
Growing
Activity
8.8
Growing
5,407
147
252

Programming language: Go
License: MIT License
Tags: GUI    
Latest version: v7.0.6

app alternatives and similar packages

Based on the "GUI" category.
Alternatively, view go-app alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of app or a related project?

Add another 'GUI' Package

README

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](docs/web/images/go-app.png)

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](CONTRIBUTING.md)].

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]