I don't have experience with web components, but I think this project should be an ideal candidate for being a web component.