We tried to use it alongside pouchdb to provide offline first experience. We ran into a lot of issues, mainly with pouchdb bugs. Then after reading this list [1] of issues in the couchdb architecture we decided to ditch it and stop trying to make pouchdb work.
I build an internal project using CouchDB2 as a backend in 2017 and it's still used today. CouchDB definitely surpassed my expectations in what has been possible to do with it. Its biggest advantages are that data sync is effortless and that it uses HTTP as a protocol, so you can communicate directly with it from a web application.
Used it this school year for a research project that needs solid replication of content and a firehose of updates. There are dozens of such projects but nothing beats the simplicity and versatility of basic HTTP calls with JSON documents and the robustness of a 15-years old project that Just Works.
Was some time ago (2016), but we built and released Typeform LITE (form creator via text-entry-like interface for smartphones) with CouchDB + PouchDB which was a pleasure as far as I can remember. Was really neat to get local-first functionality almost out of the box with web tech on smartphones.
We are using it internally as just a document store (with some erlang views but that is it). It scales very nicely, but for smaller documents postgres does the job for us so we are (slowly) moving away to simplify the tech stack.
I tried to build some hobby stuff with it (mostly worked), planning to use it instead of mongodb @work but I got hit by the limitations of the JS engine version used at the time and it got frustrating too fast for a small hobbyist project. The mongodb/couchdb thing at work was cancelled so I didn't spend more time with it.
People behind it are really, really nice though.
One of the top (the top I think ?) obsidian sync plugin uses it.
I was naive when I chose it (I was just starting to program then), but it has served me well. It's replication feature is simple to setup and is robust. It uses a REST API for any calls to the database, and it is a well designed API. I don't use all its features, but I really like it for the ones I use.
I have built advertisement bidders and ad servers. I avoid querying the database on every request (and caches) by creating app in-memory materialized views of the database.
See https://www.confluent.io/blog/leveraging-power-database-unbu... for more about this.
Another cool feature of the replication protocol is that I can tell if all app servers are on the same version of the data.
We are still using couchdb for user profile synchronisations. Basically user details and data from mobile synched to the cloud. In our application users do not interact between one another. So basically we use db per user model. This gives us synchronisation between mobile/web clients. Pity that there is no up to date mobile library for couchDB and we depend on an old one.
We used 1.6 for a large project in 2014 or so, the 2.x release removed key features for us and we were never able to upgrade. The direction they went after that just never really worked for us so we only have that legacy project still running.
CouchDB dev here. 2.x only added new features, not sure what you’re referring to that was removed. The only on incompatibility was the changes feed ids moving from numbers to strings, which is hardly a huge migration :)
salviati|1 year ago
[1] https://news.ycombinator.com/item?id=17115649
ZuLuuuuuu|1 year ago
naranha|1 year ago
rakoo|1 year ago
diggan|1 year ago
EraYaN|1 year ago
johnchristopher|1 year ago
People behind it are really, really nice though.
One of the top (the top I think ?) obsidian sync plugin uses it.
ies7|1 year ago
It's an offline first PWA (Salesman need to make an order even if offline).
And pouchdb make it easier because we don't have to care about indexeddb, leveldb or whatever of users browser's db.
So its a single codebase for serving web, ios and android.
Its great for sync but less then good for other uses
retrodaredevil|1 year ago
I was naive when I chose it (I was just starting to program then), but it has served me well. It's replication feature is simple to setup and is robust. It uses a REST API for any calls to the database, and it is a well designed API. I don't use all its features, but I really like it for the ones I use.
olakease|1 year ago
vincnetas|1 year ago
lemme_tell_ya|1 year ago
janl|1 year ago
PlayingPossum|1 year ago
gneray|1 year ago