Building data-driven components and applications doesn't have to be so ducking hard