Phoenix (wiki)

This thread exists to aggregate learning resources about the Phoenix framework.

Feel free to add links to blog posts, articles, screencasts, etc. to the Wiki (this post) as well as in a new post in the thread (so everyone else is alerted as well) :023:

Books

Programming Phoenix (Pragprog) - by @chrismccord, @josevalim and Bruce Tate

Guides

Running Elixir and Phoenix projects on a cluster of nodes - A guide on how to run a distributed Elixir app by Chris McCoord.

Deploying Phoenix Applications with Exrm - Learn what Exrm is, what it is useful for and how to use it by Brandon Richey

Creating a Game Lobby System in Phoenix with Websockets - See how Phoenix and Websockets can be used together to build a game lobby for users by Alex Jensen

Subdomains With Phoenix - How to create subdomains by Gary Rennie

Complete Guide to Deploying Phoenix Applications Using Dokku - See how Dokku can be used to deploy Phoenix applications by Praveen Perera

Starter templates

React-Phoenix-Starter-Template - A starter template for those looking to use React with Phoenix by Ryan Swapp.

Example Applications

GraphQL-Phoenix-RethinkDB - A starter template for those looking to use React with Phoenix by Adam Brodzinski.

Phoenix_Guardian - An example implementation of authentication in Phoenix using Überauth and Guardian by Daniel Neighman.

Openmaize-Phoenix - Examples of using Openmaize authentication / authorization library in a Phoenix web application by David Whitlock.

Phoenix-Toggl - Toggl tribute done with Elixir, Phoenix Framework, React and Redux by Ricardo García.

Phoenix-Trello - Trello tribute done in Elixir, Phoenix Framework, React and Redux by Ricardo García.

Rethinkdb-Phoenix-Example - A simple app demonstrating how to use RethinkDB in a Phoenix application by Ryan Swapp.

Static Markdown blog posts with Elixir Phoenix - Create a blog with Markdown support by Sebastian Seilund

Phoenix Battleship - Battleship game built with Elixir, Phoenix, React and Redux. Part of a blog series.

Building API’s

Build and test a blazing fast JSON API with Phoenix - Learn how Phoenix can be used to build a JSON API by Paul Smith
Building a Phoenix API - See an API for a market be built using Phoenix by Luiz Varela

Informative

Guts of Phoenix websocket channels - Phoenix channels and its use of Websockets explained by Zohaib Rauf

Ecto for Rails developers — The basics - A quick introduction of Ecto for Rails developers by Igor Šarčević

Elixir and Phoenix: The Future of Web APIs and Apps? - carbonfive.com

The difference between web and lib - The difference and meaning of the web and lib directories is explained by Chris Keathley

Presentation Slides

Practical Elixir, Through Phoenix

Phoenix Is Not Your Application by Lance Halvorsen - ElixirConf EU 2016

21 Likes

Added:

Ecto for Rails developers — The basics - renderedtext.com

1 Like

1 Like

Programming Phoenix is out today :023:

1 Like

Phoenix 1.2.0-rc is out today!

Bit short, but just in case it’s of interest to anyone…

3 Likes

Phoenix Is Not Your Application

^ Slides from a presentation about modularity: Phoenix is merely an interface to your application. Love it!

4 Likes

@uranther:

I really like this concept as well. Our current project at work uses a lot of GenServers and that part of the application is written exactly like those slides lay out.

However, our project also has a lot of typical CRUD operations that rely on a database, and that part of the codebase is written in a pretty typical MVC way. How would the ideas in those slides translate to an application where you are using a database? Would the dependency applications all connect to the database?

3 Likes

I would imagine it would it behave like that KV module in the slides. This module has functions which allow you to read/write/update the database (a rudimentary GenServer). If you made a module for the CRUD operations which encapsulate your database, then the Phoenix interface would not need to know what database you are using, and you would be able to swap out the DB without changing much code. I think you will still need some Ecto schemas for frontend CRUD, but I think this code will be separate from your core application logic. I would like to see a non-trivial example of this kind of architecture with Phoenix.

3 Likes

+1 for seeing a non-trivial example, beyond just simple KV store in a GenServer. Anyone know of such a thing?

Found this blog post series: Building Phoenix Battleship

Edit: added it to the wiki.

3 Likes

Actually this is more presentation than a book.

Free book - Versioned APIs with Phoenix

2 Likes

I will just drop it here in case someone need it. It can be used for a good start to learn phoenix and elixir

http://technotif.com/building-website-phoenix-framework/

The Changelog web site is a non trivial open source CMS web app written in Elixir. Should be a good example for some use cases (CMS).

The web site gets frequent updates with new features.

Phoenix is really great, but it’s young enough in its lifecycle that there aren’t too many in-production, open source sites for people to refer to as examples or inspiration. We want to throw our hat into that ring and hopefully others will follow.

1 Like

Wooow :slight_smile: Couldn’t have dreamed to find this cave of treasures. Thanks a lot OP <3

1 Like