I really have to give a shoutout to Konva.js. It’s really easy to add stuff to your canvas with it.
The only thing you have to do is make a stage object, then attach a layer object to your stage, and then add your shape objects to it. You can change add event listeners to your objects to do handling interactions, and you can attach transformer objects to your shape objects to resize them. You can also make shape objects draggable with one flag.
The ES6 module version also includes TypeScript definitions, so auto-complete is available, which makes it even easier to use.
It’s too much to explain one quick message, so I put the details on https://medium.com/better-programming/build-a-whiteboard-app-with-konva-and-angular-1e8f64e55412