The Component Manifesto
How I think about building component systems. Six principles, plus the practical patterns that go with them.
Aaron Reisman · Software engineer
Mostly React, TypeScript, Phoenix, and Elixir. Components, error states, microcopy, the small things that decide how an app actually feels. I write about it here when I think it might be useful to someone else.
Recent writing
Posts on React, Phoenix, components, and the bits in between.
How I think about building component systems. Six principles, plus the practical patterns that go with them.
How to build 404, 403, and 500 pages in Phoenix LiveView that do not feel like afterthoughts. Uses Ash exceptions and the built-in Phoenix conventions so the failure paths read like the rest of your product.
How Elixir protocols make polymorphism feel like design work. Less ceremony, more clarity, and a path away from giant conditionals.
Where I've worked
From Fortune 50 pharma to growth-stage startups. The work is mostly the same problem, just at different scales.
Open source
The list looks longer the older you get. Some of these I worked on heavily, some I just filed bugs against. They all taught me something.
A workshop for building UI components in isolation. Useful when you want to design a component before plugging it into a real app.
A declarative, resource-oriented framework for Elixir. It models your domain once and gives you APIs, authorization, and validations from there.
A predictable state container for JavaScript apps. Still useful for some kinds of state, even if Context and React Query handle most cases now.
Glue between React and Rails, with server-side rendering. Worth knowing if you have a Rails app you do not want to throw out.
The original Angular. I worked on it a long time ago and it taught me a lot about what data binding can and cannot do.
Models with key-value binding, collections with enumerable functions, views with declarative event handling. The grandparent of a lot of what we build with now.
Working together
Product engineering, component systems, refactors, the hard parts of an existing codebase. If any of that sounds like what you need, send me a note.