# Mithril
[![Build Status](](

> An Elixir architecture-in-a-box for a backend server.

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)      |

## 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.

## Premium Support

[Infinite Red]( offers premium support for this library and general web &
mobile app design/development services. Get in touch [here]( or email us at [](

![Infinite Red Logo](