Part 5 of Building Lattice — an action is a definition plus a handle() that returns effects, so a button click runs server code and dispatches a toast, a redirect or a refresh back to the client.
Part 4 of Building Lattice — declare columns in PHP and let Lattice handle sorting, filtering and pagination, backed by a data source that doesn't have to be Eloquent.
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's columns.
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.
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.