<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title><![CDATA[DigiFellow Blog]]></title>
        <description><![CDATA[Notes on Laravel, Vue.js, self-hosted infrastructure, and the everyday problems of shipping real systems.]]></description>
        <link>https://digifellow.co.za</link>
        <image>
            <url>https://images.ctfassets.net/kt6djbeea7m7/1smxiFLpbV5Sp3DOQnfeji/fbfab1be5c54a9d465a85c59903469ed/DigifellowLogo.png</url>
            <title>DigiFellow Blog</title>
            <link>https://digifellow.co.za</link>
        </image>
        <generator>RSS for Node</generator>
        <lastBuildDate>Wed, 22 Apr 2026 11:46:44 GMT</lastBuildDate>
        <atom:link href="https://digifellow.co.za/rss.xml" rel="self" type="application/rss+xml"/>
        <copyright><![CDATA[© 2026 DigiFellow PTY Ltd]]></copyright>
        <language><![CDATA[en]]></language>
        <item>
            <title><![CDATA[The silent Horizon queue failure that cost us a full day of jobs]]></title>
            <description><![CDATA[A Laravel Horizon deploy that looks healthy in every dashboard but processes zero real work — and the Redis curly-brace queue naming quirk behind it.]]></description>
            <link>https://digifellow.co.za/blog/horizon-queue-name-mismatch</link>
            <guid isPermaLink="false">/blog/horizon-queue-name-mismatch</guid>
            <category><![CDATA[laravel]]></category>
            <category><![CDATA[horizon]]></category>
            <category><![CDATA[redis]]></category>
            <dc:creator><![CDATA[Jacques]]></dc:creator>
            <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Running Coolify on a Raspberry Pi 5: what I deploy, and what I don't]]></title>
            <description><![CDATA[A year of hosting side-projects and internal tools on a Pi 5 with Coolify and Cloudflare Tunnels — the wins, the scars, and the workloads I still send to AWS.]]></description>
            <link>https://digifellow.co.za/blog/coolify-raspberry-pi</link>
            <guid isPermaLink="false">/blog/coolify-raspberry-pi</guid>
            <category><![CDATA[coolify]]></category>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[self-hosted]]></category>
            <category><![CDATA[infrastructure]]></category>
            <dc:creator><![CDATA[Jacques]]></dc:creator>
            <pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Multi-tenant domain resolution middleware for franchise platforms]]></title>
            <description><![CDATA[Resolving the current tenant from the incoming domain in Laravel — without patching the router, breaking caching, or losing custom franchise domains.]]></description>
            <link>https://digifellow.co.za/blog/multi-tenant-domain-resolution</link>
            <guid isPermaLink="false">/blog/multi-tenant-domain-resolution</guid>
            <category><![CDATA[laravel]]></category>
            <category><![CDATA[multi-tenant]]></category>
            <category><![CDATA[middleware]]></category>
            <category><![CDATA[architecture]]></category>
            <dc:creator><![CDATA[Jacques]]></dc:creator>
            <pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Laravel Passport v13: the plain-secret storage change that broke my OAuth flow]]></title>
            <description><![CDATA[Passport v13 changed how client secrets are stored. If you upgrade without reading the changelog, existing OAuth consumers will quietly stop working.]]></description>
            <link>https://digifellow.co.za/blog/passport-v13-secrets</link>
            <guid isPermaLink="false">/blog/passport-v13-secrets</guid>
            <category><![CDATA[passport]]></category>
            <category><![CDATA[oauth]]></category>
            <category><![CDATA[laravel]]></category>
            <category><![CDATA[upgrades]]></category>
            <dc:creator><![CDATA[Jacques]]></dc:creator>
            <pubDate>Sat, 10 Jan 2026 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[A stack-agnostic Docker CI/CD pipeline with GitHub Container Registry]]></title>
            <description><![CDATA[The reusable GitHub Actions workflow I drop into every Laravel and Next.js project. One per-project Dockerfile, environment-differentiated deploys, no vendor lock-in.]]></description>
            <link>https://digifellow.co.za/blog/ghcr-laravel-pipeline</link>
            <guid isPermaLink="false">/blog/ghcr-laravel-pipeline</guid>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[github-actions]]></category>
            <category><![CDATA[ci-cd]]></category>
            <category><![CDATA[infrastructure]]></category>
            <dc:creator><![CDATA[Jacques]]></dc:creator>
            <pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[onUnmounted isn't firing in my Inertia.js app — here's why]]></title>
            <description><![CDATA[Inertia reuses component instances across page visits more aggressively than you'd expect. If your Vue cleanup code isn't running, this is probably the reason.]]></description>
            <link>https://digifellow.co.za/blog/inertia-onunmounted</link>
            <guid isPermaLink="false">/blog/inertia-onunmounted</guid>
            <category><![CDATA[vue]]></category>
            <category><![CDATA[inertia]]></category>
            <category><![CDATA[laravel]]></category>
            <category><![CDATA[debugging]]></category>
            <dc:creator><![CDATA[Jacques]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Post-mortem: crypto mining malware across an end-of-life Laravel install]]></title>
            <description><![CDATA[How an unpatched Laravel 9 app became the vector for a multi-site compromise, what the attacker did once they were in, and the hardening I now apply to every production server.]]></description>
            <link>https://digifellow.co.za/blog/laravel-9-security-incident</link>
            <guid isPermaLink="false">/blog/laravel-9-security-incident</guid>
            <category><![CDATA[security]]></category>
            <category><![CDATA[laravel]]></category>
            <category><![CDATA[infrastructure]]></category>
            <category><![CDATA[post-mortem]]></category>
            <dc:creator><![CDATA[Jacques]]></dc:creator>
            <pubDate>Fri, 14 Nov 2025 00:00:00 GMT</pubDate>
        </item>
    </channel>
</rss>