I’ve used the following open source projects to make this work:
Critism and feedback greatly appriciated.