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.
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.
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.
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.
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.
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.
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.
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.
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.
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.