Then, we need a good service to store keys, with a key to get to your key
Sharing a key involves downloading it from the server, asymetrically encrypting it with the public key of the reciever, and uploading to the server again. It also allowed sharing with groups via intermediate keys decrypt-able by multiple users.
Obviously it's just a PoC - noone should use it for actually important data, and I certainly don't promise that it's actually secure - but it does (more or less) work. As it requires client-side crypto, it's not an ideal candidate for a web-service either (although one could potentially use browser extensions to make that more reasonable).