Skip to content

Package to build MacOS and Web apps using Go, HTML and CSS.

License

Notifications You must be signed in to change notification settings

lineCode/app

 
 

Repository files navigation

app

Build Status Go Report Card Coverage Status GoDoc

Package to build MacOS and Web apps using Go, HTML and CSS.

Table of Contents

Install

# MacOS 10.12 and above.
xcode-select --install
# Get package.
go get -u -v github.com/murlokswarm/app/...

Hello world

hello

Main

func main() {
	app.Run(&mac.Driver{
		OnRun: func() {
			newWindow()
		},

		OnReopen: func(hasVisibleWindow bool) {
			if !hasVisibleWindow {
				newWindow()
			}
		},
	})
}

func newWindow() {
	app.NewWindow(app.WindowConfig{
		Title:           "hello world",
		TitlebarHidden:  true,
		Width:           1280,
		Height:          768,
		BackgroundColor: "#21252b",
		DefaultURL:      "/Hello",
	})
}

app.Run starts the app. It takes an app.Driver as argument. Here we use the MacOS driver implementation. See other drivers.

When creating the window, we set the DefaultURL to our Hello component struct name: /Hello. It will make the component loaded when the window is displayed.

Component

func init() {
	app.Import(&Hello{})
}

type Hello struct {
	Name string
}

func (h *Hello) Render() string {
	return `
<div class="Hello">
	<h1>
		Hello
		{{if .Name}}
			{{.Name}}
		{{else}}
			world
		{{end}}!
	</h1>
	<input value="{{.Name}}" placeholder="Say something..." onchange="Name" autofocus>
</div>
	`
}

Components are structs that implement the app.Component interface.

Render method returns a string that contains HTML5. It can be templated following Go standard template syntax:

HTML events like onchange are mapped to the targetted component field or method. Here, onchange is mapped to the field Name.

CSS

/* [PACKAGE PATH]/resources/css/hello.css */

.Hello {
    /* Your CSS */
}

Because, we want a stylish Hello world, we define the CSS that will give us some cool look.

CSS files are located in [PACKAGE PATH]/resources/css/ directory. All .css files within that directory will be included.

See the full example.

Drivers

A driver contains specific code that allows the app package to work on multiple platforms.

Other drivers will come in the futur.

Documentation

Examples

From package:

From community:

About

Package to build MacOS and Web apps using Go, HTML and CSS.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 80.6%
  • Objective-C 16.1%
  • HTML 1.8%
  • JavaScript 1.5%