We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect
Ship
production-ready
Phoenix
SaaS apps.
The SaaS Starter Kit, a library of deep-dive screencasts, and full-series walkthroughs that build real apps — a CRM and an AirBnB clone — from empty mix phx.new to production.
~/acme_crm main ❯ mix phx.gen.live Deals Deal deals n… * creating lib/acme_crm_web/live/deal_live/index.ex * creating lib/acme_crm_web/live/deal_live/show.ex * creating lib/acme_crm_web/live/deal_live/form_compone… * creating priv/repo/migrations/2026...create_deals.exs # 4 files · ready to wire up ~/acme_crm main ❯ mix ecto.migrate
defmodule AcmeCrmWeb.DealLive.Index do
use AcmeCrmWeb, :live_view
def mount(_params, _session, socket) do
if connected?(socket), do: Deals.subscribe()
{:ok, stream(socket, :deals, Deals.list_deals())}
end
end
Two full builds, start to ship.
Each series follows one real app from empty mix phx.new to production. Every episode ships with a runnable branch you can check out and play with.
Ship a CRM
From blank project to a real sales CRM.
Auth, teams, pipelines, deals, activity feeds, email, reports. Every pattern needed to run a multi-tenant B2B product in Phoenix.
Clone AirBnB
A marketplace, the Phoenix way.
Listings, search, maps, bookings, payments, two-sided messaging, reviews. Build a real marketplace and learn what LiveView makes trivial, and what it doesn't.
Practical Phoenix screencasts.
Deep dives into one pattern at a time — the kind of code you end up pasting into every SaaS you build.
Schedule Delete
You'll learn how to implement scheduled deletion of records in Phoenix/Elixir by updating your database schema, context,…
Dynamic Select Fields
This tutorial demonstrates how to refactor an update event in a Phoenix/Elixir application by importing the latest commi…
Profile Image
Build a complete profile image upload system in Phoenix using LiveView and S3 storage. You'll learn to configure AWS cre…
Build a MCP server in Phoenix
Learn how to build an MCP (Model Context Protocol) server in Phoenix using Elixir and Hermes to give AI agents direct ac…
Phoenix Presence with LiveView
Learn to build real-time user presence tracking in Phoenix LiveView applications. This tutorial shows how to implement P…
Organizing Layouts
In this video, we're going to tackle something that comes up with virtually every new Phoenix application - customizing…
Written guides, on the table.
For when you need to read, search or copy code. Every screencast has a written companion; standalone guides too.
Rendering an Activity Feed in Phoenix LiveView
In the previous tutorial, we built an automatic activity tracking system that records events whenever a tracked schema is inserted, updated,…
Read tutorialActivity Tracking in Phoenix LiveView
Most SaaS apps need some form of activity tracking — who did what and when. In this tutorial, we'll build an automatic activity tracking sys…
Read tutorialInfinite Scroll in Phoenix LiveView
Traditional pagination works fine, but sometimes you want something smoother. Infinite scroll keeps the user in the flow — no clicking "next…
Read tutorialAdding Modals to Phoenix 1.8 with DaisyUI
In Phoenix 1.8, the built-in modal component was removed. Instead, Phoenix now encourages developers to use separate LiveView pages for new…
Read tutorialSet session values from LiveView
Working with session data can significantly improve the feel of web applications, making interactions feel more connected and dynamic. Howev…
Read tutorialAdd user anonymization to Phoenix application
When you are running a web application or service that has users, you will at some point deal with users that want to leave the service. And…
Read tutorial
Everything you need,
nothing in the way.
The SaaS Starter Kit, full screencast library, and complete app-building series — for one price.