Schema-driven widget engine
Replaced hand-coded UI components with a JSON schema and a renderer.
The Dynamatic dashboard (React + Laravel) was built feature by feature by a small team with no shared architecture.
- Problem
- Every dashboard widget was near-identical hand-written code, built independently. Shipping one took about two weeks, and each copy drifted further from the last — styling bugs, inconsistent props, no shared behaviour.
- Approach
- A senior pointed me at schema-driven UI; I spent a week stuck before it clicked. I designed a JSON schema that describes a widget declaratively, and a renderer that turns any valid schema into a live storefront component. Adding a widget became editing one file. The renderer owns layout, theming and edge cases in one place.
- Outcome
- Build time dropped from ~2 weeks to a day. Other engineers could ship widgets without touching component code, and fixing the renderer once fixed every widget at the same time.
This was the project that changed how I think about UI work. A widget stopped being something you write and became something you describe — and the surface area for bugs collapsed once the renderer was solid.
- TypeScript
- React
- JSON Schema

