About Blog Lattice Contact
 
 

RSS

August 5, 2026

The provider: turning a Laravel app into an identity provider

Part 2 of Be Your Own Identity Provider — Passport gives you an OAuth2 authorization server, not an OIDC one. What the gap actually is, and how the server package fills it without reimplementing the protocol.

Read more →
August 2, 2026

OAuth2, OIDC, and why you might want your own identity provider

Part 1 of Be Your Own Identity Provider — what OAuth2 and OIDC actually are, why MCP put both in front of every backend developer, and why I built a Laravel package instead of paying a vendor.

Read more →
July 27, 2026

Remote components: borrowing UI from another application

Part 13 of Building Lattice — an experimental POC where a page embeds a component whose data comes from a different application, exchanged through short-lived, audience-scoped browser tokens. Including the parts I'm not sure about.

Read more →
July 24, 2026

Testing Lattice: assert the payload, not the pixels

Part 12 of Building Lattice — a server-driven UI is more testable, not less. Tests assert against the exact schema the user receives and drive the real endpoints, with no browser and no duplicated contract.

Read more →
July 21, 2026

The contract is generated: how PHP becomes TypeScript in Lattice

Part 11 of Building Lattice — every wire type the server can emit is generated into TypeScript from the PHP classes themselves, so drift between backend and frontend is a compile error, not a runtime surprise.

Read more →
July 14, 2026

Component packages: ship a Lattice component, not a release pipeline

Part 10 of Building Lattice — distribute a custom component's PHP class and its React renderer as a single Composer package. No npm publish; the Vite plugin compiles the renderer straight into the consuming app.

Read more →
July 11, 2026

Notifications in Lattice: a feature that is just another payload

Part 9 of Building Lattice — a notification bell built on Laravel's native notifications table, where each notification is a self-describing payload the bell renders, actions and all.

Read more →
July 8, 2026

Realtime in Lattice: the page decides what to listen for

Part 8 of Building Lattice — declare a page's websocket listeners in PHP (channel, events, and the effects to run) and Lattice wires up the subscription. Server-driven realtime, no hand-written JS.

Read more →
July 3, 2026

Fragments in Lattice: reusable pieces of a page, loaded lazily

Part 7 of Building Lattice — a fragment is a reusable chunk of schema with its own endpoint, so heavy parts of a page load on demand instead of blocking the first render.

Read more →
June 30, 2026

Layouts & menus in Lattice: the shell is a schema too

Part 6 of Building Lattice — layouts are server-described schemas with an Outlet where the page renders, and menus are PHP definitions that resolve their own routes.

Read more →
Older →
Legal Notice  |  Privacy  |   © 2026 christlieb.eu