We chatted with Chirag Moradiya to learn how CouchDB’s replication features — teemed with a custom Spring Boot integration — create the backbone for their real-time and offline-first app, Hisab. It’s a comprehensive tool for small and micro businesses that manages everything from inventory and sales to accounting, with the advantage of offline, real-time functionality.
We learned about the architectural decisions that made CouchDB the clear database choice, and what else Chirag has paired with it.
Which of CouchDB’s distinct features have been essential to you achieving your goal(s)?
Replication and Map-Reduce Query.
How did you hear about CouchDB, and why did you choose to use it?
Real-time updates and local-first were two important considerations in the architecture. We didn’t find anything better than CouchDB + PouchDB. Firebase was there for the real-time data flow, but it was not local-first, so we chose CouchDB and have been using it for around 8 years now.
Did you have a specific problem that CouchDB solved?
Both local real-time and local-first were essential problems for us to solve.
For the folks who are unsure of how they could use CouchDB — because there are a lot of databases out there — could you explain the use case?
We use CouchDB as the main database for all the application data. In other applications we use Firestore, and earlier we used Firebase Real-time Database; CouchDB is better in terms of Performance, Scalability.
What would you say is the top benefit of using CouchDB?
Performance, as well as the unique and open replication/sync protocol.
What tools are you using in addition for your infrastructure? Have you discovered anything that pairs well with CouchDB?
1. Spring Boot Integration: We have developed a library to provide Spring Reactor APIs to interact with the CouchDB Server; which also provides repository style interfaces and abstract classes. This simplifies adding a new repository (for an entity).
2. DreamDB: It’s a middleware between CouchDB and PouchDB. It eliminates boiler-plate code to implement real-time and local-first query using CouchDB and PouchDB. It also provides a way to write documents into CouchDB in a local-first manner. DreamDB server is written in NodeJS and DreamDB Client runs on the Browser. Both communicate through a single WebSocket connection and facilitate browser communication with any number of databases — eliminating browser limits for the Max N connections. It works well with multiple browser tabs and multiple devices (mobile, desktop) of a user.
We are going to open-source both of these, so others can use them freely and contribute to add more features. But due to time constraint and having a very small team this is not done on time.
I will try working extra hours at nights and weekends to make this possible!
What are your future plans with your project? Any cool plans or developments you want to promote?
We are going to add a read-security feature to DreamDB, which is most needed in our use case.
Thank you, Chirag, for sharing your story with us and for your contributions. We’ll be following your plans and look forward to sharing your tools as they come out.
Use cases are a great avenue for sharing useful technical information; let us know how you use CouchDB! Additionally, if there’s something you’d like to see covered on the CouchDB blog, we would love to accommodate. Email us!
For more about CouchDB visit couchdb.apache.org or follow us on Mastodon: @couchdb@fosstodon.org
CouchDB Digest — June 2025 – CouchDB Blog