/fire

An idiomatic micro-framework for building Ember.js compatible APIs with Go.

Primary LanguageGoMIT LicenseMIT

Logo

Go on Fire

Test GoDoc Release

An idiomatic micro-framework for building Ember.js compatible APIs with Go.

Introduction

Go on Fire is built on top of the wonderful built-in http package, implements the JSON API specification through the dedicated jsonapi library, uses the official mongo driver for persisting resources with MongoDB, and leverages the dedicated oauth2 library to provide out-of-the-box support for OAuth2 authentication using JWT tokens. Additionally, it provides packages for request authorization, asynchronous job processing, and WebSocket-based event sourcing.

The deliberate and tight integration of these components provides a very simple and extensible set of abstractions for rapidly building backend services for websites that use Ember.js as their frontend framework. Of course, it can also be used in conjunction with any other single-page application framework or as a backend for native mobile applications.

To get started with building with Go on Fire, refer to the package documentation for more detailed information on the types and methods. Also, have a look at the example application that uses most Go on Fire features.

Features

Go on Fire ships with built-in support for various features to provide a complete toolkit for ambitious projects:

  • Declarative definition of models and resource controllers.
  • Custom group, collection, and resource actions.
  • Built-in validators incl. automatic relationship validation.
  • Callback-based plugin system for easy extendability.
  • Integrated asynchronous and distributed job processing system.
  • Event sourcing via WebSockets and SSE.
  • Declarative authentication and authorization framework.
  • Integrated OAuth2 authenticator and authorizer.
  • Support for tracing via opentracing.

Installation

To get started, install the package using the go tool:

$ go get -u github.com/256dpi/fire

License

The MIT License (MIT)

Copyright (c) 2016 Joël Gähwiler