Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Go
  3. Kivik

Kivik

NOASSERTIONGov4.5.2

A common interface to CouchDB and CouchDB-like databases for Go and GopherJS.

GitHubGitHub
344 stars43 forks0 contributors

What is Kivik?

Kivik is a Go library that provides a common interface for working with CouchDB and CouchDB-like databases. It solves the problem of fragmented client support across different CouchDB versions and implementations by offering a single, idiomatic API that works with CouchDB 1.6 through 3.x, PouchDB, and experimental backends.

Target Audience

Go developers building applications that interact with CouchDB or compatible databases, especially those needing cross-version compatibility or working with PouchDB in browser environments via GopherJS.

Value Proposition

Developers choose Kivik for its clean, Go-idiomatic API, driver-based extensibility, and reliable support for multiple CouchDB versions and implementations without locking into a specific backend.

Overview

Common interface to CouchDB or CouchDB-like databases for Go and GopherJS

Use Cases

Best For

  • Building Go applications that need to support multiple CouchDB versions
  • Creating portable code that can switch between CouchDB and PouchDB backends
  • Developing browser-based applications with PouchDB via GopherJS
  • Writing tests with mocked CouchDB interactions using the mockdb driver
  • Implementing custom CouchDB-like storage backends with the driver interface
  • Performing database replication between different backends like CouchDB and filesystems

Not Ideal For

  • Teams developing applications in languages other than Go or JavaScript (via GopherJS)
  • Projects that require interaction with non-CouchDB NoSQL databases like MongoDB or Cassandra
  • Applications needing immediate access to bleeding-edge CouchDB features not yet abstracted by Kivik
  • Environments where a lightweight, direct HTTP client to CouchDB is preferred over a comprehensive driver system

Pros & Cons

Pros

Cross-Version Compatibility

Provides a unified API for CouchDB 1.6 through 3.x and PouchDB, eliminating the need for version-specific code and ensuring portable applications.

Extensible Driver Architecture

Modeled after Go's database/sql, it allows easy creation of custom backends and mocking with the mockdb driver, facilitating testing and flexibility.

Browser Integration

Supports PouchDB via GopherJS, enabling CouchDB-like database functionality in web applications for offline-first scenarios.

Production Stability

Stable API with a comprehensive test suite and support for recent Go versions, making it reliable for production use as stated in the README.

Built-in CLI Tool

Includes a command-line interface for database operations and replication, adding convenience for administrative tasks.

Cons

Breaking Changes Between Versions

Major upgrades, like from v3 to v4, introduce significant API changes such as functional options replacing maps, requiring code migration and careful planning.

Experimental Backends

Drivers like FilesystemDB, MemoryDB, and SQLite are labeled as experimental in the README, meaning they may lack stability or full feature sets for production use.

GopherJS Dependency

Using PouchDB in browser environments relies on GopherJS, which can add complexity and potential compatibility issues with modern JavaScript tooling.

Frequently Asked Questions

Quick Stats

Stars344
Forks43
Contributors0
Open Issues35
Last commit4 months ago
CreatedSince 2017

Tags

#database-driver#pouchdb#database#couchdb#nosql#database-abstraction#api-client#go

Built With

G
Go
G
GopherJS

Included in

Go169.1k
Auto-fetched 16 hours ago

Related Projects

redisredis

Redis Go client

Stars22,197
Forks2,571
Last commit1 day ago
redigoredigo

Go client for Redis

Stars9,855
Forks1,235
Last commit8 months ago
mongo-go-drivermongo-go-driver

The Official Golang driver for MongoDB

Stars8,538
Forks937
Last commit23 hours ago
rueidisrueidis

A fast Golang Redis client that supports Client Side Caching, Auto Pipelining, RDMA, etc.

Stars2,966
Forks254
Last commit4 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub