Structuring applications can be tricky. The defaults that are generated by Phoenix are great for getting up and running quickly, however as an application grows, certain parts of the code may need to be split out into their own modules.
In this talk we will take an existing application that was built using the default Phoenix project structure and generators, and look at ways of restructuring it so that each piece of functionality of the application has its own logical place in the code. We will investigate moving code from controllers, channels and sockets into their own domains and how to interact with these domains.
We will also look at how this structure lends itself to umbrella applications and how to convert our application to use an umbrella application. We will investigate techniques that encourage isolation between applications and look at some ways to move large sections of code between OTP applications in the umbrella project.
Gary is a member of the Phoenix core team, often found answering questions on StackOverflow for the elixir and phoenix-framework tags. He is developer at VoiceLayer using Elixir and Phoenix full-time.