Schema-driven widget engine
I replaced hand-written widgets with a JSON schema and one renderer.
The Dynamatic dashboard ran on React and Laravel. A small team had built it feature by feature, without a shared architecture to tie the pieces together.
- Problem
- Every dashboard widget was almost the same hand-written code, built independently. Shipping one took about two weeks, and each copy drifted further from the last. Styling bugs appeared, props became inconsistent, and shared behaviour was hard to share.
- Approach
- A senior pointed me toward schema-driven UI. I designed a JSON schema to describe a widget and built a renderer that turns any valid schema into a live storefront component. Adding a widget became a one-file edit. Layout, theming and edge cases lived in the renderer instead of being copied into every component.
- Outcome
- Build time dropped from ~2 weeks to a day. Other engineers could ship widgets without touching component code, and a fix in the renderer reached every widget.
This project changed how I think about UI work. A widget became something we could describe instead of rewrite. Once the renderer was solid, there were fewer places for bugs to hide.

