How CouchDB and RustFS power Rentivio's property listings
Description and use
Rentivio uses CouchDB for flexible storage of dynamic listings and RustFS for photo storage, avoiding migrations and speeding image delivery via presigned URLs.
Problem
Managing dynamic property listings and high-volume photo traffic in a small marketplace required flexible data storage without frequent migrations and efficient image delivery.
Outcome
Rentivio now handles evolving listing data without migrations and serves photo traffic efficiently, keeping API responses small and enabling easy migration to other S3 providers.
Workflow
- 1. On startup, Node.js service creates missing CouchDB databases, design docs, and indexes. 2. When a listing changes, the API sends the document’s current _rev; conflicting edits fail. 3. For photo uploads or views, the API verifies permissions and returns a short‑lived presigned URL. 4. The browser downloads or uploads directly to RustFS using the S3 API. 5. Docker compose brings up all services, including CouchDB and RustFS containers with persistent volumes.
Evidence
In CouchDB, a listing is a JSON document, so a new field is simply a new field.
The key decision: image bytes never pass through our API.
The app sets up its own database. On startup, our Node.js service creates any missing databases, design documents and indexes.
RustFS speaks the S3 API, we use the standard AWS SDK. Moving to any other S3-compatible provider later is a configuration change, not a rewrite.
- Record date: 2026-10-27T09:11:49.596Z