I was in a similar situation a while back. I made a couple of projects that implemented what you’re trying to do.
This one’s pretty old but it is still running. It is a little easier to understand as it is mostly using a mix of jquery and angular:
This one is much newer and uses react and webpack for bundling and building it. It is more difficulte to understand than the previous.
I hope these help.