Another solution is to design your data model so that it's fully peer-to-peer , then you don't need a point of centralisation. Except for realtime communication/updates, but you have a lot more leeway.
CRDTs are an obvious way to do this. Or maybe something like CouchDB's document model?
CRDTs are an obvious way to do this. Or maybe something like CouchDB's document model?