In this series, we'll build a video game app that pulls data from the IGDB API and displays game information such as popular title, coming soon, videos, and screenshots. We'll explore many front-end features with Laravel and other technologies including the HTTP client, Tailwind CSS, Livewire and Alpine.js.
View the source code for this episode on GitHub.
We’ll start off by styling the game index page using Tailwind CSS. We make use of Tailwind’s latest features, including transitions and the space-x
utilities.
View the source code for this episode on GitHub.
In this episode, we'll review a variety of techniques for making the index page responsive.
View the source code for this episode on GitHub.
Next up, we'll move on to styling the single game page that shows various details of a game.
Next, we'll use Tailwind and its CSS grid responsive helpers to make the page for a single game responsive.
View the source code for this episode on GitHub.
Let's make use of the IGDB API to pull in the necessary game information for our index page. We'll start by making requests in our REST client and familiarizing ourselves with the API's query language. Then, we'll move on to using Laravel's HTTP client to pull that information into our Laravel app and display it on the index page.
Let's take a few moments to review how we might improve the performance of our app. We'll start off by looking into making single requests to the video game API. We'll also review how to asynchronously load components using Livewire. Lastly, we'll take a brief look at caching our requests.
Next up, let's build a skeleton loader to replace the loading spinners for when we are waiting for the returned data from the API. You’ll notice that several big sites, like YouTube and Facebook, use this very pattern.
In this episode, we'll use the videogame API to fetch the necessary information for a single game page. We'll add genres, a game summary, video trailers, screenshots, and similar games.
View the source code for this episode on GitHub.
Let's move on and take a look at a particular refactor that involves moving most of the logic out of our views.
View the source code for this episode on GitHub.
In this episode, we'll continue our refactor by cleaning up the view for a single game page.
View the source code for this episode on GitHub.
In this lesson, we'll leverage Blade components to remove any repeated code from our views.
In this video, we'll take some time to test our application. I'll show you how to fake an HTTP response and assert against that fake data. We'll also take a look at testing our Livewire components on the main index page.
In this lesson, we'll make use of ProgressBar.js to make our circular rating widget animate and count up to the correct score.
View the source code for this episode on GitHub.
Let's get our progress bar to work on the main page with Livewire components. To do this, we can make use of Livewire's event system.
Next, let's implement a dropdown component that searches for games using Livewire.
View the source code for this episode on GitHub.
Let's continue working on our search dropdown by making it more user-friendly with basic keyboard accessibility.
View the source code for this episode on GitHub.
Next, we'll implement a modal for the game trailer, as well as a modal for the game screenshots.
View the source code for this episode on GitHub.
As we now begin to wrap up this series, let's take a few moments to optimize our front-end assets for production by leveraging PurgeCSS to remove any unused classes in Tailwind CSS.
And that's a wrap! Join me as I say goodbye while providing a few ideas for how you might extend this application.
View the source code for this episode on GitHub.
This series used version 3 of the IGDB API; however, since publishing, version 4 is now available. In this supplementary episode, we'll review the necessary upgrade steps.