CouchDB Digest — November 2025

Hello and welcome to the last digest to be posted in 2025! This month Martin Junek shares their CouchDB user story and transports us to New Zealand, we find a new way to get Obsidian Sync working with CouchDB and get a peek at Open Telemetry’s CouchDB receiver updates.

3.5.1 has also been released this month — don’t miss the release notes! We also recommend taking a look at some more in-depth articles on QuickJS from the Neighbourhoodie and Cloudant teams. 

Clouseau 3.0.0 is here too: it’s the Lucene-based full-text engine you can use for search in CouchDB. 

Blog Articles

  • Martin Junek is the latest in the community to share a user story — discover how eCatch New Zealand uses CouchDB and PouchDB to automate paperwork for fishing vessels as they drift off and online [Martin Junek on the CouchDB Blog]
  • Karl Biron talks about MAD-CAT, the utility they authored to simulate the “-MEOW” attacks of the early 2020s that CouchDB was briefly susceptible to [Karl Biron on Trustwave] 
  • Glynn Bird shares deep-dives into MapReduce “reducers” and bulk delete features that hold true for both CouchDB and Cloudant users [Glynn Bird on the Cloudant Blog]
    • A huge thanks to Glynn for reaching out and making sure these get shared widely! That’s why these articles, published earlier this year, are appearing in November’s digest.

Videos

Tools

  • Open Telemetry has shipped updates to the CouchDB receiver that supports CouchDB versions 2.3+ and 3.1+ [Open Telemetry on GitHub] 

Thanks for stopping by to catch up with all things CouchDB. Let us know in the comments if there’s any articles, videos or tools that we missed this month. See you here again in the new year!

Automated Fishing Reports: The Charter & Haul App with Offline Sync

During the course of 2019, New Zealand rolled out an electronic catch and position reporting requirement for commercial fishing vessels and later amateur charter vessels to report the day’s journey and haul. For the Ministry for Primary Industries it’s an important way to keep up with quotas, but doing it on paper is both time consuming and easy to mix up. By reducing error-prone manual submissions, automation has helped the ministry make better informed decisions around fishing sustainability and monitoring.

Martin Junek developed eCatch in 2018, in anticipation of the rollout. eCatch is now contracted by Fisheries New Zealand to provide tools for both commercial and amateur fishing vessels. 
Read on to learn how using CouchDB’s replication protocol means eCatch automates reporting even when vessels drift out of network coverage.

Which of CouchDB’s distinct features have been essential to you achieving your goal(s)?

How did you hear about CouchDB, and why did you choose to use it?

I had used CouchDB in another project before. We needed a database that is easy to sync with a mobile app, easy to host in Docker and that we have complete control over. Cost was also a major consideration for a starting business.

Did you have a specific problem that CouchDB solved?

I wanted to create an offline-first app that syncs to a CouchDB: collecting data offline and syncing them to a central CouchDB when the device comes online again.

CouchDB’s _changes feed feature plays a big role in eCatch: 

  • We collect the data that is synchronised to CouchDB. Then there’s a service that waits for anything new to appear in the database, and sends it off to the Ministry for Primary Industries via their API. So, we basically listen to the changes feed on the global database and that tells us there’s a new document in the database.
  • We also have a Postgres database, and whatever lands in CouchDB gets sent off to Postgres where it’s easier for us to query. 

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 needed an app that collects data offline (electronic catch reporting for commercial fishing vessels) and then syncs the data with a central database. 

An important requirement is the ability to separate data for each device/user, so there is no chance of accidental data leak. The data the app collects is considered sensitive. 

What would you say is the top benefit of using CouchDB?

Definitely the sync feature that works out-of-the-box. Easy to host and maintain — it has been very stable the whole time. Also listening for the _changes feed to handle new data, which is then integrated to 3rd party systems.

It’s a common problem with SAAS apps that a bug in the code can expose somebody else’s data. CouchDB solves that just because there’s a different database for every user. So I don’t have to worry about that much, which is a big plus.

What additional tools are you using in your infrastructure? Have you discovered anything that pairs well with CouchDB?

Docker for hosting, as well as PostgreSQL. We feed all data into Postgres for easier querying/data analysis. We also use PouchDB in React Native; this requires a 3rd party adapter, which is a missing link in the CouchDB/PouchDB ecosystem. It’s one of my biggest concerns that the author stops maintaining it. 

What are your future plans with your project? Any cool plans or developments you want to promote?

We’d like to expand the app into other areas of the industry.

If you’re curious, visit eCatch in the Google Play and App store to get an idea of how users interact with it:

Thank you, Martin, for giving us a behind-the-scenes look at eCatch and how it helps New Zealand’s seas. We wish you happy surfing!

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