I was having difficulty managing the many lightning wallets that I have, on different computers, running different implementations of lightning. I wanted to build an app that allows you to access your lightning wallet on any device no matter which lightning daemon you are running.
What it does
Right now, Shine allows you to add wallets, view basic node info, view transactions, create invoices, and send payments. Shine currently supports LND & C-Lightning via the Spark server proxy.
By building on Blockstack, I was also able to take advantage of my encrypted personal storage (provided by Blockstack Gaia) so that I don't have to enter my lightning configurations more than once - a sign in to blockstack on whatever device will allow you to access your wallets with the same experience for each device.
This is currently live at shinewallet.net.
How I built it
I built it on top of blockstack, as a vuejs application.
Challenges I ran into
There were some things about LND that was challenging initially. gRPC is not an option currently in a web browser, so
http commands were required. There was a bit of a different between the http commands and the gRPC commands, but the biggest headache is the fact that LND does not allow CORS (currently a github ticket here: https://github.com/lightningnetwork/lnd/issues/2344). The workaround is turning off the CORS security check in the browser. I also had to manually add the LND SSL cert to my browser's ignored list as well.
C-Lightning via Spark wasn't too bad, but there was some weird things about how spark handles parameters that I ended up having to do some work arounds with. Also, sometimes had to make two commands to get the same information that a single LND command would have given me.
Accomplishments that I'm proud of
I'm really glad I was able to maintain feature parity between LND and C-Lightning so far. All in all, it wasn't too bad to work with either, and once I got the flow down, it was only an hour or two for adding each new command for both daemons.
What I learned
I learned a lot about LND and C-Lightning commands, and solidifying my knowledge even more so I don't have to reference commands/flows to do basic lightning things.
What's next for Shine Wallet
I will be continuing to add more commands for both LND and C-Lightning. Once all the basics (like opening/closing channels, etc.) are at a good place, I will attempt to add more implementations. I believe acinq, casa, and raspberry pie's have different implementations but I would have to look into it.