Build It With Phoenix (self-published)

I launched Build It With Phoenix into early access back in March of this year and have had some great feedback on it so far. I’ve held off on announcing it here until I was done recording the last video.

Well, today I recorded the last video! That means that early access will be ending relatively soon (depending on how quickly I can edit the remaining videos of the course).

In this video tutorial series, we will be building a chat application along the lines of Slack or Discord. You will watch or code along with me as I take you through every part of the process of creating (and finishing!) a real application.

  • Architectural decisions and different approaches to the problems we face
  • How to debug when something goes wrong
  • Where to find answers in the excellent documentation for Elixir and Phoenix
  • When and how to refactor your code
  • When and how to pivot when our initial assumptions about the application are no longer true

Example table of contents / videos

The course will be taught in phases. Each phase of the course will focus on a specific technology slice in the stack that makes Phoenix soooo good.

Phase 1

This phase will focus on getting Phoenix running and having an actual usable chat room. Some of the early focus will be on Phoenix LiveView, its setup, and its callbacks.

  • Generate random chat room
  • Chat as anonymous user to yourself
  • Chat as anonymous user to everyone listening using Phoenix PubSub
  • Join as random user
  • Chat as random user (no history)

Phase 2

Phase 2 focuses on displaying information in real time as users leave and join your chat room. Technology-wise, this will be focused on using Phoenix Presence and Channels.

  • Show a list of connected users
  • Show a message when a user connects/disconnects
  • Show an indicator or message when a user is typing

Phase 3

In this phase, we will be focused on persisting data to the database. This means we will be accepting user signups with the phx.gen.auth generator and using Ecto to talk to our Postgres database.

  • Allow user signups
  • Chat as signed in user
  • Store chat history
  • Handle errors and validation with a changeset

What else?

I have a somewhat unique philosophy in my teaching style in that I talk through why and how to do things and not just what to do. That means that in the course I discuss tradeoffs to consider when choosing one thing or another. We’ll look through documentation together so that you can have the skills to interpret documentation on your own. You’ll even see my make mistakes and have to debug those mistakes teaching you where to look in logs for clues.

Finally, to celebrate the last video being recorded, I have a further discount code just for ElixirForum. On top of the current early access discount, use code ELIXIR-FORUM-ANNOUNCEMENT at checkout for an additional $10 off any level of the course (through July 29).

To get more information or purchase the course, check out


Hi @geo,

Would it be possible for you to enable PPP(Parity Purchase Pricing) for people in other countries like India, Poland, Romania etc. in Gumroad ?

1 Like

@collegeimprovements done! I’ve been looking into enabling this for some time now and decided that now is the time!

1 Like

I probably should have mentioned this before now but to celebrate ElixirConf, I have a 15% off code: elixirconf. It will expire this Saturday night (Sep 16).

If you’ve been waiting to jump on a deal, Build It With Phoenix is up to 50% off through next Tuesday (Nov 28).

1 Like

Hey @geo
This might be asked before, but do you have any plans updating Phoenix in Action book to the latest version?
Strange, cannot use Payoneer to pay :frowning:

That is really up to Manning. If everyone makes enough requests, perhaps they will be interested.

1 Like

Now that spring (or fall for the southern hemisphere folks) has rolled around, you can use code spring-for-30 or fall-for-30 to get 30% off of Build It With Phoenix through April 21!