Awesome Open Source
Awesome Open Source

Guark

Guark allows you to build beautiful user interfaces using modern web technologies such as Vue.js, React.js..., while your app logic handled and powered by the amazing Go.

Installation ❘ Getting Started ❘ Contributing ❘ License

Guark Vue Template

🖳 About The Project

Guark is an open-source framework to build cross platform desktop GUI applications.

📢 What Guark stands for?

Go + Quark = Guark

🔮 Guark mission

Simplify cross platform desktop apps development.

ğŸŽ¸ How it works

Demo Video: https://youtu.be/_k_tq9sj-do

Guark backend and logic part handled by native Go code, while the user interfaces built with modern web technologies (Vue.js, React.js, etc...), and with Guark javascript API you can communicate between your Go and UI framework, and calling your exported Go functions and plugin(s) methods.

💌 Main Features

  • Desktop applications with GO ♥
  • One codebase for Gnu/Linux, macOS, and Windows.
  • UI Hot Reload.
  • You can use any front end framework.
  • Supports Chrome, and native webview engine or both.
  • Windows MSI bundler builtin.

📜 Installation

1. Install guark CLI tool:

go get -u github.com/guark/guark/cmd/guark

2. Some Requirements:

// fedora
sudo dnf install gtk3-devel webkit2gtk3-devel gcc-c++ pkgconf-pkg-config

// Ubuntu
sudo apt install libgtk-3-dev libwebkit2gtk-4.0-dev build-essential

// Windows
// https://jmeubank.github.io/tdm-gcc/download/

Getting Started

After installing guark CLI tool, the next step is to create a new guark project based on the template that you like:

Create a new project

# cd to empty directory and run:
guark init --template vue --mod github.com/username/appname

Start Dev Server

After creating new project run:

guark run

Export your first GO function to JS API

1. Create a new file in lib/funcs directory:
// lib/funcs/foo_bar.go

import (
    "github.com/guark/guark/app"
)

func FooBar(c app.Context) (interface{}, error) {

   c.App.Log.Debug("Foo bar called")

   return "This is a my return value to javasript", nil
}
2. Then export it to Guark JS API in lib/config.go file:
// Exposed functions to guark Javascript api.
var Funcs = app.Funcs{
    "foo": funcs.FooBar,
}

3. Then you can call your function in javascript:
import g from "guark"

g.call("foo")
    .then(res => console.log(res))
    .catch(err => console.error(err))

See Vue template as an example: https://github.com/guark/vue

Guark Engines:

You can change the engine in guark.yaml file.

  • webview: Uses native system webview.
  • chrome: Uses and requires google chrome.
  • hybrid: Uses chrome if exists in the system, if chrome not available guark will switch to native webview by default.

Build Your App

You can build your app with

guark build

Bundle Windows App

After building your app you can bundle your windows app into msi using WIX.

guark bundle

Wix required!

Install it from: https://wixtoolset.org/

Cross Compiling To Windows From Gnu/Linux:

You can build windows app from your linux based system, using mingw64

1. Install mingw64:

// Fedora
sudo dnf install mingw64-gcc

// Ubuntu
sudo apt install binutils-mingw-w64

2. Configure guark-build.yaml File:

Double check the binary paths in guark-build.yaml.

3. Build The App:

# this command will build and compile linux, and windows app. you can find your compiled apps in `dist/` directory.
guark build --target linux --target windows

You can use any cross compiler for example: guark build --target darwin. just change the options in guark-build.yaml file.

Note

You can also bundle windows app into MSI file from your linux based system via guark bundle, but you need to install wix tools:

# fedora
dnf install msitools

# Ubuntu
sudo apt-get install wixl

Contributing

PRs, issues, and feedback from ninja gophers are very welcomed.

License

Guark is provided under the MIT License.


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
javascript (68,063) 
go (14,437) 
hacktoberfest (4,217) 
vue (4,039) 
golang (3,676) 
reactjs (1,026) 
electron (913) 
desktop (281) 
desktop-app (90) 
desktop-application (69) 
hybrid-apps (28) 
framework7 (18) 
gui-application (18) 

Find Open Source By Browsing 7,000 Topics Across 59 Categories

Advertising 📦 10
All Projects
Application Programming Interfaces 📦 124
Applications 📦 192
Artificial Intelligence 📦 78
Blockchain 📦 73
Build Tools 📦 113
Cloud Computing 📦 80
Code Quality 📦 28
Collaboration 📦 32
Command Line Interface 📦 49
Community 📦 83
Companies 📦 60
Compilers 📦 63
Computer Science 📦 80
Configuration Management 📦 42
Content Management 📦 175
Control Flow 📦 213
Data Formats 📦 78
Data Processing 📦 276
Data Storage 📦 135
Economics 📦 64
Frameworks 📦 215
Games 📦 129
Graphics 📦 110
Hardware 📦 152
Integrated Development Environments 📦 49
Learning Resources 📦 166
Legal 📦 29
Libraries 📦 129
Lists Of Projects 📦 22
Machine Learning 📦 347
Mapping 📦 64
Marketing 📦 15
Mathematics 📦 55
Media 📦 239
Messaging 📦 98
Networking 📦 315
Operating Systems 📦 89
Operations 📦 121
Package Managers 📦 55
Programming Languages 📦 245
Runtime Environments 📦 100
Science 📦 42
Security 📦 396
Social Media 📦 27
Software Architecture 📦 72
Software Development 📦 72
Software Performance 📦 58
Software Quality 📦 133
Text Editors 📦 49
Text Processing 📦 136
User Interface 📦 330
User Interface Components 📦 514
Version Control 📦 30
Virtualization 📦 71
Web Browsers 📦 42
Web Servers 📦 26
Web User Interface 📦 210