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  

One thought on “Automated Fishing Reports: The Charter & Haul App with Offline Sync

  1. CouchDB Digest — November 2025 – CouchDB Blog

Leave a comment