/mithril

An Elixir architecture-in-a-box for a backend server. Supports GraphQL, Authority authentication, and more.

Primary LanguageElixirMIT LicenseMIT

Mithril

Build Status

An Elixir architecture-in-a-box for a backend server. Supports GraphQL, Authority authentication, and more.

Mithril provides a foundation for a long-lived, maintainable, and highly scalable backend server. It uses Elixir for reliability and scalability, and a set of conventions to ensure that the backend server is maintainable over the long term.

Mithril is not a framework. It has two parts:

  1. Project Generator: A project generator which sets up your project with good defaults and architecture.

  2. Conventions: A set of conventions described in the Mithril documentation. None of these conventions are new to the Elixir community. Mithril simply explains existing tools and demonstrates best practices.

See the documentation for details.

Libraries Supported

Other than Elixir, Mithril does not dictate your technology choices. However, the project generator can generate projects with support for any of the libraries listed below.

Name Optional Purpose
Authority Yes Authentication library
Absinthe Yes GraphQL APIs (for mobile apps)
Phoenix Yes HTTP/Websocket support
Webpack / Brunch Yes Front-end assets (JS/CSS)
Hound Yes In-browser integration tests

Install

Mithril works best with Elixir 1.6. You can install Mithril like so:

$ mix archive.install hex mix_generator
$ mix archive.install hex mix_templates
$ mix template.install hex mithril

You can then generate your project:

$ mix gen mithril my_app [options]

See the documentation for details on available options.