Lyn
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:
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
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.
SSL/TLS
Use scripts/generate-ssl-certs.sh
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 CONTRIBUTING.md.
Credits
Main author and active maintainer is Valerii Iatsko, feel free to follow:
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