<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>RSS feed of christlieb.eu</title><description>Personal opinions and tech related content.</description><link>https://christlieb.eu/</link><item><title>Forms in Lattice: fields you choose, not columns you inherit</title><link>https://christlieb.eu/blog/lattice-forms/</link><guid isPermaLink="true">https://christlieb.eu/blog/lattice-forms/</guid><description>Part 3 of Building Lattice — a form is fields you declare and a handle() you write, validated live with Precognition and never bound to a model&apos;s columns.</description><pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate></item><item><title>How Lattice turns PHP into React: the server-driven contract</title><link>https://christlieb.eu/blog/lattice-the-server-driven-contract/</link><guid isPermaLink="true">https://christlieb.eu/blog/lattice-the-server-driven-contract/</guid><description>Part 2 of Building Lattice — the contract underneath it all: PHP serializes a typed tree of nodes, and one React component renders it through a registry.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Introducing Lattice: server-driven React for Laravel, without the coupling</title><link>https://christlieb.eu/blog/introducing-lattice/</link><guid isPermaLink="true">https://christlieb.eu/blog/introducing-lattice/</guid><description>My new side project — describe pages, forms and tables once in PHP and render them as real React over Inertia, decoupled from the data model.</description><pubDate>Mon, 15 Jun 2026 09:00:00 GMT</pubDate></item><item><title>Rebuilding christlieb.eu with Astro: from a Laravel app to a static site</title><link>https://christlieb.eu/blog/rebuilding-christlieb-eu-with-astro/</link><guid isPermaLink="true">https://christlieb.eu/blog/rebuilding-christlieb-eu-with-astro/</guid><description>Why I moved my personal site off Laravel and Filament to a static Astro build on GitHub Pages — and the migration details worth knowing.</description><pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate></item><item><title>How I Host christlieb.eu with Docker, Coolify, and GitHub</title><link>https://christlieb.eu/blog/hosting-laravel-with-coolify-and-github/</link><guid isPermaLink="true">https://christlieb.eu/blog/hosting-laravel-with-coolify-and-github/</guid><description>A walkthrough of how I deploy christlieb.eu — a Laravel app running on FrankenPHP, managed by Coolify on a Hetzner VPS. Multi-stage Dockerfile, three Docker Compose services, and a deployment workflow that stays out of the way.</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Reviving My Blog: A Fresh Start with Modern Tech</title><link>https://christlieb.eu/blog/reviving-my-blog-a-fresh-start-with-modern-tech/</link><guid isPermaLink="true">https://christlieb.eu/blog/reviving-my-blog-a-fresh-start-with-modern-tech/</guid><description>Why I rebuilt my blog with modern tooling — moving off Laravel Nova to Filament and a streamlined Hetzner + Coolify hosting setup.</description><pubDate>Sat, 28 Dec 2024 01:00:00 GMT</pubDate></item><item><title>Connect Laravel to Lokalise the right way</title><link>https://christlieb.eu/blog/connect-laravel-to-lokalise-the-right-way/</link><guid isPermaLink="true">https://christlieb.eu/blog/connect-laravel-to-lokalise-the-right-way/</guid><description>Learn how to manage your Laravel translations the right way if you are using lokalise.</description><pubDate>Mon, 01 Jul 2024 00:00:00 GMT</pubDate></item><item><title>Automate build and push to ECR via GitHub Actions</title><link>https://christlieb.eu/blog/automate-build-and-push-to-ecr-via-github-actions/</link><guid isPermaLink="true">https://christlieb.eu/blog/automate-build-and-push-to-ecr-via-github-actions/</guid><description>Build a minimal multi-stage PHP Dockerfile and automate building and pushing the images to Amazon ECR with a GitHub Actions workflow.</description><pubDate>Fri, 06 May 2022 00:00:00 GMT</pubDate></item><item><title>Build Docker images for production</title><link>https://christlieb.eu/blog/build-docker-images-for-production/</link><guid isPermaLink="true">https://christlieb.eu/blog/build-docker-images-for-production/</guid><description>a brief introduction how we handle Docker images for production and how this fundamentally differs to our development images. Our example will be a simple Laravel application.</description><pubDate>Mon, 10 Feb 2020 00:00:00 GMT</pubDate></item><item><title>How to use traefik as a reverse proxy in development</title><link>https://christlieb.eu/blog/how-to-use-traefik-as-a-reverse-proxy-in-development/</link><guid isPermaLink="true">https://christlieb.eu/blog/how-to-use-traefik-as-a-reverse-proxy-in-development/</guid><description>In this article we will configure dnsmasq and traefik to act as a reverse proxy on our development machine. This way we are able to use custom .test domains in all of our docker projects.</description><pubDate>Sat, 08 Feb 2020 00:00:00 GMT</pubDate></item><item><title>b5 example project with Laravel</title><link>https://christlieb.eu/blog/b5-example-project-with-laravel/</link><guid isPermaLink="true">https://christlieb.eu/blog/b5-example-project-with-laravel/</guid><description>In this article we will setup a Laravel example project with b5. We will leverage services like Apache, PHP, Node.js, Redis, MySQL, phpMyAdmin and MailHog.</description><pubDate>Tue, 28 Jan 2020 00:00:00 GMT</pubDate></item><item><title>b5 - a modular task runner</title><link>https://christlieb.eu/blog/b5-a-modular-task-runner/</link><guid isPermaLink="true">https://christlieb.eu/blog/b5-a-modular-task-runner/</guid><description>In this article we will take a look into b5 - a modular task runner written in Python by TEAM23.</description><pubDate>Sun, 26 Jan 2020 00:00:00 GMT</pubDate></item><item><title>Local Development Environment with b5, Docker, and Traefik</title><link>https://christlieb.eu/blog/local-development-environment-with-b5-docker-and-traefik/</link><guid isPermaLink="true">https://christlieb.eu/blog/local-development-environment-with-b5-docker-and-traefik/</guid><description>Learn how we use Docker, Docker Compose and traefik with our self developed task runner b5.</description><pubDate>Sun, 26 Jan 2020 00:00:00 GMT</pubDate></item><item><title>How to install PHP 7.3 and Nginx on Ubuntu 19.04</title><link>https://christlieb.eu/blog/how-to-install-php-7-3-and-nginx-on-ubuntu-19-04/</link><guid isPermaLink="true">https://christlieb.eu/blog/how-to-install-php-7-3-and-nginx-on-ubuntu-19-04/</guid><description>In this article I will show you how to install Nginx and PHP 7.3 on a blank Ubuntu server.</description><pubDate>Thu, 26 Sep 2019 00:00:00 GMT</pubDate></item><item><title>How I Revived My Blog</title><link>https://christlieb.eu/blog/how-i-revived-my-blog/</link><guid isPermaLink="true">https://christlieb.eu/blog/how-i-revived-my-blog/</guid><description>Hi, I am Manu a software developer from Augsburg, Germany and this is the story of my next attempt to blog regularly.</description><pubDate>Fri, 16 Aug 2019 00:00:00 GMT</pubDate></item></channel></rss>