In this section you can read posts I've written myself.

🚀 Event Sourcing for Laravel is now available

Original – by Freek Van der Herten – 1 minute read

I'm thrilled to announce that our premium course Event Sourcing in Laravel has just launched.

If you ever wanted to get started with event sourcing, this is the course for you. It contains a beautifully designed ebook, two hours worth of videos, and a demo Laravel app containing an event-sourced shopping cart.

Event sourcing isn't an all or nothing approach. Even if your project doesn't need the full power of event sourcing, you can still benefit from knowing and implementing best practices from the event sourcing world.

We're offering a 20% launch discount for the next two weeks to celebrate this release.

In this stream, you can see my colleague Brent and I launch the course, and answer questions from the audience.

Read more

A new design for Ignition

Original – by Freek Van der Herten – 5 minute read

A couple of years ago, Ignition became the default error page in Laravel.

Ignition provided a vastly improved design over Whoops: it brought Laravel specific niceties (such as showing the routing, queries) and the ability to display and even run solutions (e.g. generating an app key).

At Spatie, we think we can improve the design of Ignition even more. Our initial plan was to release this new design in tandem with Laravel 9 as a big bang surprise release. We've changed our mind on this because we'd like to have feedback from the community.

In this blog post, I'd like to share our ideas and plans for Ignition.

Read more

Stay up to date with all things Laravel, PHP, and JavaScript.

You can follow me on these platforms:

On all these platforms, regularly share programming tips, and what I myself have learned in ongoing projects.

Every month I send out a newsletter containing lots of interesting stuff for the modern PHP developer.

Expect quick tips & tricks, interesting tutorials, opinions and packages. Because I work with Laravel every day there is an emphasis on that framework.

Rest assured that I will only use your email address to send you the newsletter and will not use it for any other purposes.

Dealing with expired signed URLs in Laravel

Original – by Freek Van der Herten – 2 minute read

Out of the box, Laravel comes with the ability to generate "signed" URLs. These URLs have a hash in their query string that verifies that the URL was not modified.

At Flare, we use these signed URLs to add action links in mail notifications. The action links allow users to snooze and resolve errors right from the mail without having to be logged in. Pretty convenient!

My buddy Dries Vints noticed a slight drawback. He got a mail from Flare that contains these action links. A few hours after the mail arrived, he clicked one of the action links. This is what he saw.

Read more

Develop faster by adding dev routes file in a Laravel app

Original – by Freek Van der Herten – 3 minute read

Laravel's awesome closure based routing was probably one of the first features I fell in love with. I take it for granted now, but back in the days, such a simple way of adding a route felt like a glass of water in hell compared to the other frameworks.

Typically, you would only add routes that are necessary for the users of your app. Something that I have been doing for a long time is to create a routes file, called dev.php, with routes that can help with app development.

Read more

How Flare's GitHub integration works under the hood

Original – by Freek Van der Herten – 1 minute read

Last week, my colleague Ruben and I launched a major new feature at Flare: there's a new integration with GitHub that makes it possible to:

  • create a GitHub issue directly on a Flare error
  • associate a GitHub issue with a Flare error by mentioning a Flare URL in the GitHub issue
  • automatically resolve an error on Flare when you close the GitHub issue
  • automatically close a GitHub issue when you resolve an error in Flare

In this stream, Ruben and I will show you how you can use this integration and how it works under the hood.

Read more

Data Transfer Object v3 has been released

Original – by Brent Roose and Freek Van der Herten – 4 minute read

We've released a new major version of spatie/data-transfer-object. This package makes it easy to create objects that have a certain shape. Properties can even be validated.

In this post I'd like to tell you more the package.

Read more

Handling console signals in Laravel

Original – by Freek Van der Herten – 7 minute read

When you cancel a long-running artisan command with Ctrl+C, a SIGINT signal is sent by the operating system to the PHP process. You can use this signal to perform some cleanup quickly.

Symfony 5.2 introduced support for handling signals in commands.

We've released a package called spatie/laravel-signal-aware-commands that provides a substantial improvement to how you can use these signals in a Laravel app. In this blog post, I'd like to tell you all about it.

Read more