For a snappy data-centric app, you pretty much need your entire app logic to run client-side.
Everyone always ends up with this terrible denormalized client-side cache with duplicated Server side logic.
What you really want is the exact same db running server-side and client-side.
I thought for a while this would be an sql db but now I think sql and the relational model is the wrong approach for web app data as they are inefficient for watching queries and syncing.