ElixirCasts

ElixirCasts

Forum Sponsor

Phoenix LiveView Tutorial (ElixirCasts)

Love LiveView and games?

I’ve published a new tutorial where we build a clone of the popular word guessing game, Wordle with Phoenix LiveView.

The tutorial provides step-by-step instructions that show you how to leverage the power of Phoenix LiveView to build dynamic, interactive web applications.


Let’s build an application, together!

Dive into the world of real-time web applications with this comprehensive Phoenix LiveView Tutorial.

In this series we’ll build a game using Phoenix LiveView to create our own version of the popular word-guessing game, Wordle.

Perfect for both beginners and experienced Elixir developers, this tutorial provides step-by-step instructions that show you how to leverage the power of Phoenix LiveView for building dynamic, interactive web applications.

  • 13 episodes, totaling 1 hour and 32 minutes!
  • Craft a dynamic, real-time Wordle-clone web application using Phoenix LiveView.
  • Deepen your understanding of Phoenix LiveView’s architecture and capabilities.
  • Acquire valuable Elixir programming skills applicable to a variety of web applications.
  • Create an interactive, user-friendly game!

Episodes in this Phoenix LiveView course

Part 1
In this episode we begin creating our game by generating a new Phoenix LiveView application. Then we’ll set up the database, customize layouts with HEEx and Tailwind CSS, and update the router.

Part 2
This episode details setting up a Wordle-like game in Phoenix LiveView, covering creating two different database tables, populating them with 5-letter words using the WordList and NimbleCSV packages, and configuring routes and LiveView components.

Part 3
In this episode we’ll build a grid for our game. To do that we’ll create a couple different LiveView components to use for the cells, rows, and grid.

Part 4
In this episode we’ll create a keyboard component for our game. Using LiveView LiveComponents, we’ll add a dynamic keyboard to the application, and style it with Tailwind CSS and DaisyUI.

Part 5
In this episode we’ll start implementing our game logic. We’ll manage player guesses using Schemaless Ecto Changesets. Together we’ll walk through creating a module to handle guess validation and a module to encapsulate game logic.

Part 6
In this episode we’ll build the functionality that allows a player to add letters to their guess. We’ll update our LiveView to handle events from the keyboard and use them to update the game grid.

Part 7
In this episode, we update our game to allow players to remove letters from their guesses. This involves updating our KeycapComponent to send events to our LiveView.

Part 8
In this episode we update our game, allowing players to submit their guesses. We’ll build functionality to check if the guess is a valid word, comparing it against the game’s solution, and then updating the game’s state accordingly.

Part 9
In this episode we’ll update our game and add feedback for player guesses. We’ll update our LiveView to handle various guess outcomes. We’ll use flash messages to display the results of each guess.

Part 10
In this episode, we’ll update the guess feedback in our game by implementing custom JavaScript hooks and animations.

Part 11
In this episode, we’ll improve the guess feedback for our game with JavaScript hooks. We’ll focus on updating the background of a guess, to indicate the status of the guess.

Part 12
Similar to our last episode, here we’ll dynamically update the backgrounds of the keycaps on our game keyboard using JavaScript Hooks.

Part 13
We’ll let people play our game as much as they want! In this episode, we’ll refine the game’s flow and user experience by leveraging Phoenix LiveView to start a new game for users.

Price: Included as part of ElixirCasts subscription.

Most Liked Responses

ElixirCasts

ElixirCasts

Forum Sponsor

This tutorial is now included with the Alchemist’s Edition subscription and the first episode is free for everyone!

AstonJ

AstonJ

I’ve been on to the ElixirCasts team to consider creating a course for years, so it’s nice to see they’ve finally got around to it! :smiley:

ElixirCasts

ElixirCasts

Forum Sponsor

Better late than never :wink:

Where Next?

Popular in Courses Top

nikos
Get 20% off with coupon code “elixirforum”! Ruby programming was one of the best course I have taken. I can’ t wait !
New
AstonJ
New, from @danielberkompas Learn how to build fast, dependable web apps with Phoenix in this series of in-depth, step by step screenc...
New
arrowsmith
Hi, I’m George Arrowsmith - you may remember me from such educational Elixir content as Phoenix on Rails. I’m really pleased to announce...
New
PJUllrich
Now available on Indie Courses Hi folks! Peter Ullrich here :slight_smile: I’m happy to announce my second video course called Building ...
New
Cruz
Hello Everyone, Early access to the " Full-Stack GraphQL with Absinthe, Phoenix, and React" video course is now available on the Pragmat...
New
AstonJ
You’re a programmer, so you don’t need spoon feeding with the conventional drivel about “this is an integer.” No. You need to know what’s...
New
DmytroNasyrov
Hey folks! A brand new course about distributed systems and microservices. The course is recorded based on my offline lectures for stude...
New
sorentwo
The Oban Training 101 curriculum is extracted from our in-person training from ElixirConf 2023. It’s designed to teach everything you nee...
New
JEG2
If you don’t make it past the first sentence of this post, here’s what you need to know: I’ve published a free Livebook guide about data...
New
germsvel
:wave: Hi everyone, Earlier this year, I started working on a Testing LiveView course. I’m now happy to announce that the course is comp...
New

Other popular topics Top

marius95
Hello everyone, I try to use an Javascript Event Handler in my root.html.leex file. Therefore I created a function in the app.js file: ...
New
Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 53690 245
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36128 110
New

We're in Beta

About us Mission Statement