About Blog Lattice Contact
 
 

RSS

August 11, 2026

The auth UI: eight screens, zero frontend wiring

Part 4 of Be Your Own Identity Provider — the UI package binds all eight auth view contracts to Lattice pages, and ships its React through Composer. The first real consumer of a mechanism I built for something else.

Read more →
August 8, 2026

The relying party: logging in through any OIDC provider

Part 3 of Be Your Own Identity Provider — the client package: Authorization Code + PKCE against any provider, strict id_token validation, and trading a login session for short-lived, audience-scoped API tokens.

Read more →
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 →
Older →
Legal Notice  |  Privacy  |   © 2026 christlieb.eu