In fact, there is not much on IndexedDB for synchronising database. You only need RESTful service for replicating from server to client and vice versa.
For effective synchronization, the service should support etag (HTTP spec) for each record, updated (ATOM spec) for collections. Additionally to support resumable update, totalResults, startIndex, itemsPerPage (OpenSearch spec) and ordering by updated is necessary.
When GETting a record 'If-None-Match' header of etag is specified, to get full caching benefit, When PUTting a record 'If-Match' header is specified to resolve conflict on client side. To update the collection, query is limited by updated parameter, so that only records not in the client database are returned.
That is how I attend to implement on my open source IndexedDB API wrapper. See example app https://github.com/yathit/feature-matrix in angularjs and demo.
Also look at PouchDB.