# Lyn
[![Build Status](](
[![Dependency Status](](
[![devDependency Status](](
[![Hex Version](](
[![Hex docs](](
[![PayPal donate button](](

**DEVELOPMENT IS IN PROGRESS. If you have ideas, suggestions, questions, please join #lyn slack channel in Elixir's slack (read about chat below)**

This is an Elixir CMS. Aims to be the great open-source ecommerce and/or startup
solution for those who are searching for a performance and stability on top
of modern technologies like React and Elixir.

In order to run, Lyn requires **Elixir 1.2 or higher**, **PostgreSQL 9.4 or higher** and **NodeJS 4 or higher**.

Please check [ROADMAP]( on progress.

## Introduction
Lyn is a CMS written in Elixir. It combines CRUD and Object Tree models, which means
that all of the site structure in kept in single tree of objects and provides
Flux-like API backend, while you still can use CRUD for building REST-API for admin
panels or providing ability of editing stuff easily in the front-end.

Elixir is chosen as the back-end language because of speed and hot-load.
I strongly believe Elixir is the future of CMS building.

## Features
* React Server-Side render using heavily modified [Reaxt]( source-code under the hood

## Before You Begin
Before you begin we recommend you read about the basic building blocks that assemble a Lyn application:
* [Elixir](
* [GraphQL](
* [Phoenix Framework](
* [React](
* [Relay](
* [Twitter Bootstrap 4](

## Quick Install
* Install dependencies with `mix deps.get`
* Create and migrate your database with `mix ecto.create && mix ecto.migrate`
* Install Node.js dependencies with `npm install`

The last step might take a very long time since we are using some dependencies
from github (like Bootstrap 4).

## Configuration
You can create `#{ENV}.config.exs` files in `config/` directories, they will be
included after running initial config files: `config.exs` and `#{ENV}.config.exs`.

## Running
Start Phoenix endpoint with `mix phoenix.server`

Now you can visit [`localhost:4000`](http://localhost:4000) from your browser.

**Notice** currently I didn't include scripts to install starter database,
but make sure you at least created some languages in admin panel (/admin/languages)
before working with objects tree. Installation scripts coming soon once object
tree will be ready.

## Deploying
Ready to run in production? Please [check Phoenix Framework deployment guides](

Use `scripts/` to generate self-signed certificate if you need to.

In `config/prod.exs` you will find an example with `:https` directive, uncomment it
and put there paths to your certificates as well as intermediate certificate if you
have one.

## FAQ & Chat
This project moves fast and has an active community, so if you have a question that is not answered below please visit #lyn channel on [Elixir-lang Slack]( or file an issue.

## Contributing
I am more than happy to accept external contributions to the project in the form of feedback, bug reports and even better - pull requests.

If you would like to submit a pull request, please make an effort to follow the guide in [](

## Credits
Main author and active maintainer is Valerii Iatsko, feel free to follow:
* [Medium Blog](
* [Twitter](
* [GitHub](

Based on some code from these projects:
* [Ex Admin]( by [@smpallen99](
* [Phoenix Guardian]( by [@hassox](
* [PxBlog tutorial]( by [@Diamond](
* [React Redux Universal Hot Example]( by [@erikras](
* [Reaxt]( by [@awetzel](
* [Typograph]( by [@stereobooster](

## License