https://github.com/bitcoinjs/bitcoinjs-lib is a great starting point. Note that stepping through sample code is a little funky as some functions go off to nowhere - I found that I need to run directly over certain cryptographic functions before I got a result. It also helps to have your own node (or use something like Quicknode) to augment whatever it is you're trying to do on-chain.
Another option to send over lightning is to leverage the Opennode service - you can go straight to their endpoints or use their npm lib.
The other option is to stand up your own LN infra - lots of resources (lnbits I think is a great start).