I used the Three.js library. It has quite alot of examples and documentation
Sounds are managed and played with the help of the Howler.js library. check it out!
The model for the weapon is courtesy of www.kenney.nl, give him a visit!
Got a lot of inspiration from spray.training
The spreadsheet Mr_Clovis made was a great help