which browser API is used (indexedDB?)
All of this is built on top of async-append-only-log, this in turn uses polyraf, which is a wrapper around random-access-storage family of libraries so that it works both in the browser and in node with the same api. In the browser it will use random-access-web which for firefox will use indexeddb but for chrome will use a special faster backend.
how is the private key stored
It's stored in localstorage.
what happens when you run out of storage space
Currently it will just fail to write anything new ;-) It does partial replication so the storage requirement is not as big as a normal client. As part of the grant we will be trying to tackling the problem of infinite growth that the current log structure dictates. That part will start in 3 months time roughly, but will be spec'ed over the next couple of months. It might end up using something like meta feeds. But that is still to be determined :)
blob storage
Yeah so blobs are different than the log, as it is in a normal ssb client as well. The existing blobs library is very fs dependant so I couldn't use that. Instead I wrote a small module that uses the same blobs protocol but stores the data using the same polyraf library. The core library has a parameter where you can say that you only want to download and store blobs under a certain size. It will then stream larger blobs so they don't take up space. Another approach would be use something like the blobs purge library.