Today, I'm working on a Selenium "driver" that uses the exact same testing API as the one you're already familiar with. Could be cool?
Today, I'm working on a bit of refactoring for the Laravel Elixir codebase. In this lesson, come along, as I experiment with a particular refactor - which will hopefully organize things a bit more cleanly.
Why don't all Laracasts videos focus on PHP and Laravel? Because that's not real life. Sure, sometimes you need to write server-side code. But, at other times, you're tasked with animating an object along a freaking circle. So let's figure out how.. ;)
View the source for this little example on JSBin.com.
As part of the Laracasts refresh that I'm currently working on at the time of this recording, I need a dedicated page for my "Laracasts Snippet" podcast. In this episode, as an example, we'll create a brand new project, fetch my podcast feed using Simplecast's API, cache it, and then render it in a view.
View the source code for this lesson on GitHub.
Today, I'm finishing up the 1.0 release of Laravel Mix. If you'd like to come along, I need to flesh out a few more end-to-end tests for the project. In many ways, these are far and away the most important tests you can write. Nobody cares that your unit tests pass, if the system doesn't work for the user!
Vue is fantastic. Turbolinks is, too. So what if we could find a way to use them together seamlessly. Well, out of the box that can be a bit tricky, due to a few reactivity and caching issues. Luckily, though, this problem seems to have been solved. In this episode, come along as I test it out.
During Laracon 2017, Maxime Locqueville demoed Algolia's excellent new Vue InstantSearch package. After watching this presentation, very quickly, I realized that I needed to improve the forum search functionality here at Laracasts. So come along as I get my feet wet and figure out how to use this new Vue plugin from scratch.
In the previous episode, together, we figured out how to use Algolia's Vue InstantSearch component package. At the conclusion, I noted that I would implement it for Laracasts. That process is now done, so come along as I provide a high-level overview of the integration and how it all pieces together.
Today, I'm working on the Laracasts codebase, itself. We need to fire off a "Please Come Back" email, each day, to all users who canceled their account two months ago. In this episode, we'll use TDD to drive out this logic from scratch.
Far and away, the most frequently requested subject material at Laracasts is a review of Vuex. However, I've been hesitant to oblige in the last year. I'm not sold yet. As such, these next few videos will be a bit unique. Rather than serving as an endorsement from an "expert," I'll be taking the role of the student. Come along as I review the documentation, try things out, make mistakes, and work my way through the learning process. Together, we'll come out the other side with a much better understanding of the pros and cons to this approach to state management, as well as when we might reach for it in future projects.
We're starting to wrap our heads around the basic concept of Vuex, so let's continue on in this episode with a review of getters and actions.
Now that we have a firmer grasp of the fundamentals, let's work through one of the vuex example projects. We'll build your typical, boring todo app. This should give us a better understanding of how to organize the Vuex store, and delegate to it from our Vue components.
Today, I need to add a missing test for a recent Laravel Mix PR that we merged. Even though I'm sure the PR code is correct, it's important that we fill it in with a test to ensure, for the lifetime of the project, that this piece of functionality does exactly what we expect it to.
View the source code for this episode on GitHub.
Today, I need to whip up a countdown timer for an upcoming sale. While we could pull in a dedicated plugin for this functionality, it's fairly simple to implement on our own with Vue. Come along, as I knock it out in this episode.
View the source code for this episode on GitHub.
In this episode, come along as I prepare a login modal from scratch. As it turns out, this will provide a number of useful real world examples for us to work through. How do you display and hide a modal from anywhere in your app? Can we display validation errors without manually performing a full page refresh? What can we use to rapidly style our form? And might we implement one of those fancy loading spinners after the "Log In" button is pressed? All of these questions (and more) will be answered.
In this episode, I'll outline my thought process behind a Laravel Mix codebase refactor that I'm currently working. We'll address the areas that I've determined to be problematic, and then discuss and review the solution I've come up with to make each component of the API more cohesive.
If you don't mind, let's continue on from the previous episode, where we reviewed a plugin refactoring for the Laravel Mix codebase. In this episode, I'd like to verify that this approach can be used by any author to introduce new functionality into Mix. It sounds like we need to prepare a feature test to declare each ability that the code should offer. Come along!
Come along, as I upgrade the Laracasts 404 page from Laravel's default view to something a bit more special. In this episode, you'll learn how to override the default 404 view, render AfterEffects animations with Airbnb's Lottie library, and then write the necessary page CSS with Tailwind. ...And we'll do it all in less than twenty minutes.
Today, I'd like you to come along as I refactor a class with too many responsibilities. Once we've found and addressed the issue, we'll prepare a series of tests to confirm our new desired public API and protect our refactoring against any potential regressions.
In this episode, we'll work through a refactor of the "Browse" page here at Laracasts. I've tweaked the code just enough to give us a variety of small refactors to work on. And "small" is key for this lesson. Specifically, we'll focus on indentation, variable names, and clarity.