From start to finish
Build a full real-time chat application along with me
Elixir as a language and Phoenix as a framework are well-known as excellent tools to use when building applications that need real-time capabilities. What better application to create that takes advantage of those real-time capabilities than a chat application?
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
- Elixir v1.14
- Phoenix v1.7
- Phoenix LiveView
- Tailwind CSS
Some previous programming experience will be very helpful. A familiarity with the command line and its usage will be very useful as well. We will be going over some introductory Elixir in the beginning so if you don't know Elixir, I'll get you up to speed.
No experience with Phoenix is required as I will be explaining almost everything along the way.
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.
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 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
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
Developer, published author, speaker, teacher
I'm a professional software engineer with decades of experience, a published author, and have been writing and teaching Elixir and Phoenix since 2014. Over the years, I've spoken at multiple ElixirConfs (national and regional), multiple Empex LA conferences, and various other general tech conferences. A lot of my early writing was on geoffreylessel.com and I wrote Phoenix in Action for Manning Publications in 2019.
My latest conference talk
To give you an idea of my teaching or presentation style in a live context, here is my latest (recorded) conference talk.