<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet href="atom.xsl" type="text/xsl"?>

<feed xmlns="http://www.w3.org/2005/Atom">
    <title>David Carr&#039;s Blog</title>
    <subtitle>David Carr&#039;s Blog Posts</subtitle>
    <link href="https://dcblog.dev" />
    <link href="https://dcblog.dev/feed" rel="self" />
    <updated>2026-04-23T08:07:42+00:00</updated>
    <id>https://dcblog.dev</id>
    <author>
        <name>David Carr</name>
        <uri>https://dcblog.dev</uri>
    </author>

            
        <entry>
            <title> New Feature: Data Anonymization in Laravel DB Sync</title>
            <link href="https://dcblog.dev/new-feature-data-anonymization-in-laravel-db-sync" />
            <id>https://dcblog.dev/new-feature-data-anonymization-in-laravel-db-sync</id>
            <updated>2026-03-16T17:57:00+00:00</updated>
            <summary type="html"><![CDATA[Syncing production data to local/staging just got safer!]]></summary>
            <content type="html"><![CDATA[Syncing production data to local/staging just got safer!]]></content>
        </entry>
            
        <entry>
            <title>Supercharge Laravel with Junie and PhpStorm Integration</title>
            <link href="https://dcblog.dev/supercharge-laravel-with-junie-and-phpstorm-integration" />
            <id>https://dcblog.dev/supercharge-laravel-with-junie-and-phpstorm-integration</id>
            <updated>2025-05-19T05:09:00+00:00</updated>
            <summary type="html"><![CDATA[I’m always looking for ways to work more efficiently. Here’s how **Junie**, an AI assistant, and my Laravel integration package **laravel-junie** for PhpStorm have helped simplify my workflow.]]></summary>
            <content type="html"><![CDATA[I’m always looking for ways to work more efficiently. Here’s how **Junie**, an AI assistant, and my Laravel integration package **laravel-junie** for PhpStorm have helped simplify my workflow.]]></content>
        </entry>
            
        <entry>
            <title>Upgrading Code Quality with Laravel Pint using custom rules</title>
            <link href="https://dcblog.dev/upgrading-code-quality-with-laravel-pint-using-custom-rules" />
            <id>https://dcblog.dev/upgrading-code-quality-with-laravel-pint-using-custom-rules</id>
            <updated>2025-05-18T12:35:00+00:00</updated>
            <summary type="html"><![CDATA[In this post, we’ll walk through our tailored `pint.json` configuration — explain what we changed, why we changed it, and how it helps us write cleaner, safer, and more maintainable PHP code.]]></summary>
            <content type="html"><![CDATA[In this post, we’ll walk through our tailored `pint.json` configuration — explain what we changed, why we changed it, and how it helps us write cleaner, safer, and more maintainable PHP code.]]></content>
        </entry>
            
        <entry>
            <title>Introducing Laravel Junie: Streamline Junie Guideline Integration in Laravel</title>
            <link href="https://dcblog.dev/introducing-laravel-junie-streamline-junie-guideline-integration-in-laravel" />
            <id>https://dcblog.dev/introducing-laravel-junie-streamline-junie-guideline-integration-in-laravel</id>
            <updated>2025-05-17T01:06:00+00:00</updated>
            <summary type="html"><![CDATA[Laravel developers often seek tools that enhance productivity and maintain code consistency. The newly released **Laravel Junie** package addresses this need by simplifying the integration of PhpStorm&#039;s Junie guideline documents into Laravel projects.]]></summary>
            <content type="html"><![CDATA[Laravel developers often seek tools that enhance productivity and maintain code consistency. The newly released **Laravel Junie** package addresses this need by simplifying the integration of PhpStorm&#039;s Junie guideline documents into Laravel projects.]]></content>
        </entry>
            
        <entry>
            <title>Implementing a Dark Mode Toggle in Laravel with Tailwind CSS 4</title>
            <link href="https://dcblog.dev/implementing-a-dark-mode-toggle-in-laravel-with-tailwind-css-4" />
            <id>https://dcblog.dev/implementing-a-dark-mode-toggle-in-laravel-with-tailwind-css-4</id>
            <updated>2025-03-17T05:50:00+00:00</updated>
            <summary type="html"><![CDATA[TailwindCSS 4 out the box supports prefers-color-scheme CSS media feature, I want class based dark mode support]]></summary>
            <content type="html"><![CDATA[TailwindCSS 4 out the box supports prefers-color-scheme CSS media feature, I want class based dark mode support]]></content>
        </entry>
            
        <entry>
            <title>Consistent API error handling in Laravel</title>
            <link href="https://dcblog.dev/consistent-api-error-handling-in-laravel" />
            <id>https://dcblog.dev/consistent-api-error-handling-in-laravel</id>
            <updated>2025-02-10T06:40:00+00:00</updated>
            <summary type="html"><![CDATA[In API development, providing clear and structured error responses is crucial for a seamless developer experience. This blog post explores a custom exception handling approach that ensures consistent JSON error responses, making it easier for API consumers to handle errors efficiently.]]></summary>
            <content type="html"><![CDATA[In API development, providing clear and structured error responses is crucial for a seamless developer experience. This blog post explores a custom exception handling approach that ensures consistent JSON error responses, making it easier for API consumers to handle errors efficiently.]]></content>
        </entry>
            
        <entry>
            <title>Effortlessly Trigger Modals with Session Flash in Laravel</title>
            <link href="https://dcblog.dev/effortlessly-trigger-modals-with-session-flash-in-laravel" />
            <id>https://dcblog.dev/effortlessly-trigger-modals-with-session-flash-in-laravel</id>
            <updated>2025-01-14T10:51:00+00:00</updated>
            <summary type="html"><![CDATA[Here’s a dead simple way of triggering a model to show or anything really from a controller…]]></summary>
            <content type="html"><![CDATA[Here’s a dead simple way of triggering a model to show or anything really from a controller…]]></content>
        </entry>
            
        <entry>
            <title>List your Laravel Herd projects on localhost</title>
            <link href="https://dcblog.dev/list-your-laravel-herd-projects-on-localhost" />
            <id>https://dcblog.dev/list-your-laravel-herd-projects-on-localhost</id>
            <updated>2024-12-21T09:36:00+00:00</updated>
            <summary type="html"><![CDATA[When developing with **Laravel Herd**, managing multiple projects can sometimes feel overwhelming. Wouldn’t it be great to have a sleek way to list all your parked projects directly from localhost?]]></summary>
            <content type="html"><![CDATA[When developing with **Laravel Herd**, managing multiple projects can sometimes feel overwhelming. Wouldn’t it be great to have a sleek way to list all your parked projects directly from localhost?]]></content>
        </entry>
            
        <entry>
            <title>How to get a docker container id</title>
            <link href="https://dcblog.dev/how-to-get-a-docker-container-id" />
            <id>https://dcblog.dev/how-to-get-a-docker-container-id</id>
            <updated>2024-12-09T04:45:00+00:00</updated>
            <summary type="html"><![CDATA[To get the Docker container ID, you can use the docker ps command, which lists all running containers along with their container IDs. Below are different methods to retrieve the container ID]]></summary>
            <content type="html"><![CDATA[To get the Docker container ID, you can use the docker ps command, which lists all running containers along with their container IDs. Below are different methods to retrieve the container ID]]></content>
        </entry>
            
        <entry>
            <title>Mastering PHPStan: Common Errors and How to Fix Them</title>
            <link href="https://dcblog.dev/mastering-phpstan-common-errors-and-how-to-fix-them" />
            <id>https://dcblog.dev/mastering-phpstan-common-errors-and-how-to-fix-them</id>
            <updated>2024-09-07T01:16:00+00:00</updated>
            <summary type="html"><![CDATA[PHPStan is a static analysis tool for PHP that focuses on finding bugs in your code without actually running it. By analyzing your codebase, PHPStan can detect potential issues such as type errors, undefined variables, and incorrect method calls, among others. It helps developers maintain high code quality and adhere to best practices by providing detailed feedback and suggestions for improvement. PHPStan integrates seamlessly with various development environments and CI/CD pipelines, making it an essential tool for PHP developers aiming to write robust and error-free code.]]></summary>
            <content type="html"><![CDATA[PHPStan is a static analysis tool for PHP that focuses on finding bugs in your code without actually running it. By analyzing your codebase, PHPStan can detect potential issues such as type errors, undefined variables, and incorrect method calls, among others. It helps developers maintain high code quality and adhere to best practices by providing detailed feedback and suggestions for improvement. PHPStan integrates seamlessly with various development environments and CI/CD pipelines, making it an essential tool for PHP developers aiming to write robust and error-free code.]]></content>
        </entry>
            
        <entry>
            <title>Git Stashing Explained</title>
            <link href="https://dcblog.dev/git-stashing-explained" />
            <id>https://dcblog.dev/git-stashing-explained</id>
            <updated>2024-08-30T01:13:00+00:00</updated>
            <summary type="html"><![CDATA[When working on a project, you might find yourself in a situation where you need to switch branches or pull updates from a remote repository, but you have uncommitted changes that you don&#039;t want to lose. This is where Git&#039;s stashing feature comes in handy. Stashing allows you to temporarily save your changes without committing them, so you can work on something else and come back to your changes later.]]></summary>
            <content type="html"><![CDATA[When working on a project, you might find yourself in a situation where you need to switch branches or pull updates from a remote repository, but you have uncommitted changes that you don&#039;t want to lose. This is where Git&#039;s stashing feature comes in handy. Stashing allows you to temporarily save your changes without committing them, so you can work on something else and come back to your changes later.]]></content>
        </entry>
            
        <entry>
            <title>Enhance Your Web Applications with These Livewire UI Kits</title>
            <link href="https://dcblog.dev/enhance-your-web-applications-with-these-livewire-ui-kits" />
            <id>https://dcblog.dev/enhance-your-web-applications-with-these-livewire-ui-kits</id>
            <updated>2024-08-30T01:09:00+00:00</updated>
            <summary type="html"><![CDATA[Are you looking to enhance your Laravel Livewire projects with top-notch UI components? Look no further! In this article, we explore some of the best Livewire UI kits available, each designed to streamline your development process and elevate your web applications.]]></summary>
            <content type="html"><![CDATA[Are you looking to enhance your Laravel Livewire projects with top-notch UI components? Look no further! In this article, we explore some of the best Livewire UI kits available, each designed to streamline your development process and elevate your web applications.]]></content>
        </entry>
            
        <entry>
            <title>Mocking Stripe in Laravel with Stripe Mock Server</title>
            <link href="https://dcblog.dev/mocking-stripe-in-laravel-with-stripe-mock-server" />
            <id>https://dcblog.dev/mocking-stripe-in-laravel-with-stripe-mock-server</id>
            <updated>2024-08-26T04:25:00+00:00</updated>
            <summary type="html"><![CDATA[If you&#039;ve ever tried to test your Stripe integration, you&#039;ll know how challenging it can be. The Stripe SDK uses lots of static methods that are hard to fake.

I would rather not write my own stubs or dummy classes that get switched out in tests, that&#039;s a lot of work.

thankfully, Stripe has a [Mock Server](https://github.com/stripe/stripe-mock) that you can install. The idea is you use Stripe&#039;s API endpoints in your application, and when tests run, they run using the Stripe Mock server endpoints and return a sample response from Stripe for each endpoint.]]></summary>
            <content type="html"><![CDATA[If you&#039;ve ever tried to test your Stripe integration, you&#039;ll know how challenging it can be. The Stripe SDK uses lots of static methods that are hard to fake.

I would rather not write my own stubs or dummy classes that get switched out in tests, that&#039;s a lot of work.

thankfully, Stripe has a [Mock Server](https://github.com/stripe/stripe-mock) that you can install. The idea is you use Stripe&#039;s API endpoints in your application, and when tests run, they run using the Stripe Mock server endpoints and return a sample response from Stripe for each endpoint.]]></content>
        </entry>
            
        <entry>
            <title>How to Organize Composer Scripts Effectively</title>
            <link href="https://dcblog.dev/how-to-organize-composer-scripts-effectively" />
            <id>https://dcblog.dev/how-to-organize-composer-scripts-effectively</id>
            <updated>2024-08-14T05:13:00+00:00</updated>
            <summary type="html"><![CDATA[A composer script is a set of custom commands defined in a `composer.json` file. It lets you automate tasks like running tests, performing analysis, or managing dependencies in a PHP project.

This allows you to create a shortcut to run the scripts, as long as they are installed by the project.]]></summary>
            <content type="html"><![CDATA[A composer script is a set of custom commands defined in a `composer.json` file. It lets you automate tasks like running tests, performing analysis, or managing dependencies in a PHP project.

This allows you to create a shortcut to run the scripts, as long as they are installed by the project.]]></content>
        </entry>
            
        <entry>
            <title>Toggle classes from your markup in PhpStorm and VSCode</title>
            <link href="https://dcblog.dev/toggle-classes-from-your-markup-in-phpstorm-and-vscode" />
            <id>https://dcblog.dev/toggle-classes-from-your-markup-in-phpstorm-and-vscode</id>
            <updated>2024-08-14T05:09:00+00:00</updated>
            <summary type="html"><![CDATA[Working with TailwindCSS will result in a lot of classes being added to your HTML. This can at times make it hard to read the markup.]]></summary>
            <content type="html"><![CDATA[Working with TailwindCSS will result in a lot of classes being added to your HTML. This can at times make it hard to read the markup.]]></content>
        </entry>
            
        <entry>
            <title>How to toggle a mobile menu with Tailwind and AlpineJS</title>
            <link href="https://dcblog.dev/how-to-toggle-a-mobile-menu-with-tailwind-and-alpinejs" />
            <id>https://dcblog.dev/how-to-toggle-a-mobile-menu-with-tailwind-and-alpinejs</id>
            <updated>2024-06-08T01:38:00+00:00</updated>
            <summary type="html"><![CDATA[Making a mobile and desktop menu is something that is super simple to do with Tailwind and AlpineJS.

A typical navbar will contain a series of links styled with Tailwind, it&#039;s possible to apply different styles depending on the browser size for mobile and desktop, but to me it&#039;s far simpler to have 2 divs in your HTML. A div for mobile and one for desktop.]]></summary>
            <content type="html"><![CDATA[Making a mobile and desktop menu is something that is super simple to do with Tailwind and AlpineJS.

A typical navbar will contain a series of links styled with Tailwind, it&#039;s possible to apply different styles depending on the browser size for mobile and desktop, but to me it&#039;s far simpler to have 2 divs in your HTML. A div for mobile and one for desktop.]]></content>
        </entry>
            
        <entry>
            <title>Customize Your Hashnode Blog Frontend with Headless Frontend and Laravel</title>
            <link href="https://dcblog.dev/customize-your-hashnode-blog-frontend-with-headless-frontend-and-laravel" />
            <id>https://dcblog.dev/customize-your-hashnode-blog-frontend-with-headless-frontend-and-laravel</id>
            <updated>2024-05-27T01:10:00+00:00</updated>
            <summary type="html"><![CDATA[The first focus is using [Hashnode&#039;s API](https://hashnode.com/headless) to pull in your posts and pages into a Laravel application when using headless within your blog advanced settings page.]]></summary>
            <content type="html"><![CDATA[The first focus is using [Hashnode&#039;s API](https://hashnode.com/headless) to pull in your posts and pages into a Laravel application when using headless within your blog advanced settings page.]]></content>
        </entry>
            
        <entry>
            <title>PHP use an enum for Filters</title>
            <link href="https://dcblog.dev/php-use-an-enum-for-filters" />
            <id>https://dcblog.dev/php-use-an-enum-for-filters</id>
            <updated>2024-05-03T10:51:00+00:00</updated>
            <summary type="html"><![CDATA[I have a class that allows filtering based on an option, I need a way to accept options and also reject invalid options.]]></summary>
            <content type="html"><![CDATA[I have a class that allows filtering based on an option, I need a way to accept options and also reject invalid options.]]></content>
        </entry>
            
        <entry>
            <title>Composer Scripts: Boosting Your Team&#039;s Efficiency</title>
            <link href="https://dcblog.dev/composer-scripts-boosting-your-teams-efficiency" />
            <id>https://dcblog.dev/composer-scripts-boosting-your-teams-efficiency</id>
            <updated>2024-04-12T11:26:00+00:00</updated>
            <summary type="html"><![CDATA[Hey there! Today, we&#039;re diving into the world of Composer scripts and exploring their untapped potential. If you&#039;re part of the Laravel community or work with PHP, you&#039;re likely familiar with the plethora of out-of-the-box scripts you get when you install Laravel. These are incredibly handy in reacting to various events during development. But here&#039;s something you may not know—you can brew your own custom scripts to streamline your workflow even further!]]></summary>
            <content type="html"><![CDATA[Hey there! Today, we&#039;re diving into the world of Composer scripts and exploring their untapped potential. If you&#039;re part of the Laravel community or work with PHP, you&#039;re likely familiar with the plethora of out-of-the-box scripts you get when you install Laravel. These are incredibly handy in reacting to various events during development. But here&#039;s something you may not know—you can brew your own custom scripts to streamline your workflow even further!]]></content>
        </entry>
            
        <entry>
            <title>How to disable Laravel console commands</title>
            <link href="https://dcblog.dev/how-to-disable-laravel-console-commands" />
            <id>https://dcblog.dev/how-to-disable-laravel-console-commands</id>
            <updated>2024-02-05T11:49:00+00:00</updated>
            <summary type="html"><![CDATA[Suppose you find yourself in a situation where you need to disable or intercept a console command in Laravel. This tutorial will primarily focus on how to intercept the `php artisan migrate` command. We&#039;ll delve into the command method `app/Console/Kernel.php` and explore how to prevent the migrate command from executing any actions.]]></summary>
            <content type="html"><![CDATA[Suppose you find yourself in a situation where you need to disable or intercept a console command in Laravel. This tutorial will primarily focus on how to intercept the `php artisan migrate` command. We&#039;ll delve into the command method `app/Console/Kernel.php` and explore how to prevent the migrate command from executing any actions.]]></content>
        </entry>
    </feed>
