GeertJohan / ango

ango is a tool that generates a protocol for communication between Go and AngularJS over http/websockets.
BSD 2-Clause "Simplified" License
15 stars 2 forks source link

Build Status Issues

Ango: AngularJS <-> Go communication

ango is a tool that generates a protocol and API's for communication between Go and AngularJS over websockets.

This project is under development and API's are likely to break.

Goals

The main goals are:

What I don't want to do (not goals):

I chose to create a tool that generates Go and Angular/javascript without external dependencies, so the generated server and client code contain all information to communicate.

Generated Go code is a self-contained package without external imports. The generated code/package is to be imported by the application implementing/using the ango service.

For the client side a single .js file is generated containing an angular module. The module can be included by any other angular module.

Terminology

A service exists of one or more procedures defined on the server- and/or client-side. A procedure within a service is implemented on either the client- or server-side, and can be called by the other side. A procedure can have zero or more arguments and zero or more return values.

Notes

Several files describe the working of ango.

Development

Devtool

This project involves several packages. There's a simple tool to automatically run and update the workspace as you go. To run the tool, cd into the root folder (ango) and run: sh tools/dev/run.sh. The devtool performs the following:

Packages & directories

The ango source is divided into seperate packages:

These packages exist to seperate logic and make it easier to create a more advanced parser (maybe using yacc and nex).

Some other directories exist:

TODO

There are still lots of things to do. Check out the issues list. Please contact me if you would like to contribute.

Download

At this time, automated builds are only available for linux_amd64. Download release for production. Or get the latest build (nightly).

Note on pretty javascript: When js-beautify is installed, it is used to clean up the generated javascript.

License

This project is licensed under a Simplified BSD license. Please read the LICENSE file.