• This repository has been archived on 09/Mar/2022
  • Stars
    star
    764
  • Rank 59,449 (Top 2 %)
  • Language
    Objective-C
  • Created almost 13 years ago
  • Updated about 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

CouchDB-compatible mobile database; Objective-C version

TouchDB

by Jens Alfke ([email protected])
with contributions from Alexander Edge, Chris Kau, David Venable, Derek Clarkson, Fabien Franzen, fcandalija, J Chris Anderson, Marty Schoch, Mike Lamb, Paul Mietz Egli, Robin Lu
and technical advice from Damien Katz and Filipe Manana

IMPORTANT-LOOKING NOTICE

TouchDB is the legacy 1.0 version of the project now named Couchbase Lite. Due to the renaming and architectural changes, Couchbase Lite lives in a separate repository (although it inherits from TouchDB.) We don't recommend using TouchDB for any new development: Couchbase Lite is faster, easier to use, has a better API, has a lot of new features including full-text search and geo-queries, and is actively being developed and supported.

Please proceed to Couchbase Lite. Thanks! --Jens & the Couchbase Mobile team

END OF IMPORTANT-LOOKING NOTICE

.

.

.

.

TouchDB is a lightweight Apache CouchDB-compatible database engine suitable for embedding into mobile or desktop apps. Think of it this way: If CouchDB is MySQL, then TouchDB is SQLite.

By "CouchDB-compatible" I mean that it can replicate with CouchDB, and that its data model and high-level design are "Couch-like" enough to make it familiar to CouchDB/Couchbase developers. Its REST API is nearly identical, though it doesn't support a few CouchDB features, like user accounts, that aren't useful in mobile apps. Its implementation is not based on CouchDB's (it's not even written in Erlang.) It does support replication to and from CouchDB.

By "suitable for embedding into mobile apps", I mean that it meets the following requirements:

  • Small code size; currently about 350kbytes of ARM7 code. (Code size is important to mobile apps, which are often downloaded over cell networks.)
  • Quick startup time on relatively-slow CPUs; ideally 100ms or less.
  • Low memory usage with typical mobile data-sets. The expectation is the number of documents will not be huge, although there may be sizable multimedia attachments.
  • "Good enough" performance with these CPUs and data-sets.

And by "mobile apps" we're focusing on iOS and Android, although there's no reason we couldn't extend this to other platforms like Windows Phone. And it's not limited to mobile OSs -- the Objective-C implementation runs on Mac OS as well, and on Linux and other Unix-like OSs via GNUstep.

More Information

  • There's lots more information on the wiki.
  • There's a "Grocery Sync" demo app for iOS, that implements a simple shared to-do list.
  • Or if you want to ask questions or get help, join the mailing list.

Platforms

  • Mac OS X -- 10.7.2 or higher.
  • iOS -- 5.0 or higher.
  • Linux, BSD, etc -- Any platform supported by current GNUstep and libobjc2.
  • MS Windows -- As supported by GNUstep using MingW.
  • Android / Java -- Has its own source base and repository.

Requirements

  • It's written in Objective-C.
  • Xcode 4.5+ is required to build it (Clang 3.1+, with GNUstep).
  • Runtime system requirements for Apple platforms are iOS 5+, or Mac OS X 10.7.2+.

License

  • TouchDB itself is under the Apache License 2.0.
  • FMDB, by Gus Mueller, is under the MIT License.
  • Google Toolbox For Mac is under the Apache License 2.0.
  • CocoaHTTPServer, by Robbie Hanson, is under the BSD License.
  • MYUtilities (portions of which are copied into the vendor/MYUtilities directory) is under the BSD License. (But note that I, Jens, wrote MYUtilities and would have no problem re-licensing it under Apache for use here.)

Development Status

TouchDB 1.0.1 was released on January 15, 2013; there have been various bug fixes since then. Use the latest revision on the default 'master' branch.

TouchDB has not been actively developed since Spring 2013. It's not recommended for new projects.

Building TouchDB

On a Mac

(You might prefer to just download the latest stable release. But if you want to build it yourself...)

For full details see the wiki page. The basic steps are:

  1. Clone the TouchDB repository to your local disk.
  2. In that directory run "git submodule init" and then "git submodule update". This will clone the dependent library repos (such as FMDB and MYUtilities) into the vendor/ subdirectory.
  3. Open the Xcode project and build the "Mac Framework" and/or "iOS Framework" schemes.

With GNUstep

Please refer to the files BUILDING.txt and SETUP.txt in the GNUstep directory.

More Repositories

1

iOS-Couchbase

This repository fork is obsolete; the project's been restructured and development is going on in other repos. Please follow the link below, or read the current README.
Erlang
403
star
2

node-ottoman

Node.js ODM for Couchbase
TypeScript
287
star
3

TouchDB-Android

CouchDB-compatible mobile database; Android version
Java
240
star
4

CouchCocoa

Objective-C API for CouchDB on iOS and Mac OS
Objective-C
218
star
5

Android-Couchbase

The android build for humans.
C
203
star
6

ToDoLite-Android

To-Do list sample app for Couchbase Lite, native Android version
Java
190
star
7

cbfs

Distributed Blobstore using Couchbase Server
Go
185
star
8

Couchbase-Lite-PhoneGap-Plugin

Plugin to install Couchbase Lite in your PhoneGap app on iOS or Android
Objective-C
183
star
9

Grocery-Sync-iOS

The simplest Couchbase Lite demo app for iOS
Objective-C
154
star
10

mini-hacks

A fun and quick way to discover the beauty of Couchbase Mobile in real apps.
Java
137
star
11

GrocerySync-Android

Couchbase Lite demo app for Android: A simple synced shopping list
Java
136
star
12

react-native-couchbase-lite

Couchbase Lite binding for React Native Android & iOS
Java
111
star
13

couchbase-rs

The official, community supported Couchbase Rust SDK
C
104
star
14

Linq2Couchbase

A Language Integrated Query (LINQ) provider for the Couchbase .NET SDK
C#
91
star
15

nativescript-couchbase

Objective-C
87
star
16

ToDoLite-iOS

To-Do list sample app for Couchbase Lite, native iOS version
Objective-C
85
star
17

CouchbaseLiteViewer

Mac app for viewing/modifying Couchbase Lite databases
Objective-C
81
star
18

iMonkey

Threadsafe Spidermonkey Static Library for iOS
C++
81
star
19

CouchChat-iOS

Couchbase Lite demo app for iOS: A chat client
Objective-C
78
star
20

couchbase-shell

Shell yeah!
Rust
68
star
21

cbgb

an experimental server, the birthplace of punk, and a future backcronym
Go
60
star
22

couchstore

couchbase storage file library
C
58
star
23

devguide-examples

Examples for topics in the developer guide
C
58
star
24

mobile-training-todo

ToDo List app built with Couchbase Mobile
Java
57
star
25

touchbase

A Couchbase N1QL example of a social network app using Angular.js and Node.js
JavaScript
56
star
26

vagrants

Vagrant files to provision Couchbase VMs
Puppet
56
star
27

try-cb-java

Java-Based Couchbase 7.0 travel-sample application
Java
56
star
28

TodoLite-PhoneGap

Basic todo list app for Couchbase Lite and PhoneGap
JavaScript
55
star
29

try-cb-nodejs

JavaScript
51
star
30

couchbase-server-coreos

Dockerfiles and scripts for running Couchbase Server under Docker and CoreOS
43
star
31

Couchbase-by-Example

Series of tutorials for Couchbase Lite, Sync Gateway and Couchbase Server
Swift
42
star
32

photo-drop

P2P Photo Sharing app. Read more http://blog.couchbase.com/photodrop
Swift
41
star
33

couchbase-mobile-tools

A repo for hosting both supported and unsupported tools made by Couchbase
C++
41
star
34

iOS-Couchbase-manifest

Repo manifest for (legacy) iOS-Couchbase project. Current development is on the next gen native version: TouchDB (see link)
37
star
35

try-cb-dotnet

Couchbase Travel Sample app written in ASP.NET
C#
35
star
36

iErl14

Project to build static lib for iOS containing Erlang VM BEAM, CouchDB drivers, emonk interface to spidermonkey
C
35
star
37

query

PLEASE NOTE: code is currently maintained at
Go
35
star
38

sdk-rfcs

SDK RFCs
34
star
39

ForestDB-Benchmark

Benchmark program for ForestDB, Couchstore, LevelDB, RocksDB, and WiredTiger
C++
34
star
40

php-couchbase-v2

Couchbase 2.0 API based on pecl/memcached. For 3.0 see couchbase-php
PHP
34
star
41

cellar

An experimental KV store, which implements an LSM on top of Bolt segments.
Go
32
star
42

WebSockets-Cocoa

Objective-C implementation of WebSockets and BLIP protocols, for iOS and Mac OS
Objective-C
32
star
43

CouchChat-PhoneGap

=> https://github.com/couchbaselabs/TodoLite-PhoneGap
31
star
44

TodoLite-Ionic

To-Do list sample app for Couchbase Lite, using Ionic and the PhoneGap plugin
JavaScript
31
star
45

libcouchbase-cxx

Header-only C++11 Couchbase Client
C++
30
star
46

walrus

Tiny Go implementation of Couchbase Bucket API, for testing
Go
28
star
47

crouton

C++20 coroutine runtime and cross-platform I/O library
C++
28
star
48

restful-angularjs-nodejs

An example of using the Node.js SDK for Couchbase with an AngularJS frontend
JavaScript
27
star
49

cbft

*THIS PROJECT HAS MOVED* from couchbaselabs TO: https://github.com/couchbase/cbft -- no further development will be done here on couchbaselabs/cbft
Go
27
star
50

cean-web-chat

Real-time chat with the CEAN stack and Socket.io
JavaScript
26
star
51

CouchDraw

A synchronized drawing app that utilizes Couchbase Sync Gateway and Xamarin to enable shared canvases.
C#
25
star
52

ng-couchbase-lite

AngularJS Wrapper for Couchbase Lite RESTful Endpoints
JavaScript
24
star
53

cbugg

Because all bug systems are bad and I like writing bad code.
JavaScript
23
star
54

blog-source-code

Source code for blog posts
C#
23
star
55

OnTheSpot

Saves photos with lat/lon and other telemetry to Mobile Couchbase. Please fork and play with it, we hope it becomes the basis for other folks "real" apps. Coolest part about it is the different apps can share the same dataset, and hence share network effects.
Objective-C
23
star
56

mobile-travel-sample

Mobile Version of Travel sample App using Couchbase Lite 2.x
Java
22
star
57

try-cb-python

Couchbase Travel Sample Application Python REST API Backend
Python
22
star
58

Android-Couchbase-SourceBuild

Full source build of Android stuff.
Shell
22
star
59

couchbase-nginx-module

The module for nginx webserver to access Couchbase Server
C
22
star
60

learningportal

A Learning Portal built with Couchbase Server 2.0 and ElasticSearch
Ruby
21
star
61

pouchdb-angular2

Couchbase Mobile Web Application with PouchDB and Angular 2
TypeScript
21
star
62

showfast

Performance dashboard
HTML
19
star
63

couchbase-net-examples

Examples for configuring and using the Couchbase .NET SDK 2.0
C#
18
star
64

couchbase-lite-titanium

Couchbase Lite Titanium Module
Objective-C
18
star
65

erlgeom

Erlang binding for geometry libraries
Erlang
18
star
66

sdk-doctor

Application-server-side cluster connection diagnostics.
Go
18
star
67

tuqtng

TUQ - The Next Generation
Go
18
star
68

Couchbase.Lite.Mapping

A simple library that extends Couchbase.Lite to provide extension methods for converting an object to a Document/MutableDocument and a Document/MutableDocument to an object.
C#
18
star
69

sequoia

Scalable testing with containers
Python
17
star
70

gameapi-nodejs

Make a simple game server API using NodeJS and Express
JavaScript
17
star
71

couchbase-lite-local

Run a couchbase lite instance with REST interface locally on you Mac or Raspberry Pi
Ruby
17
star
72

sg-replicate

A tool that can drive a replication between Sync Gateway instances
Go
17
star
73

couchbase-capi-server

OBSOLETE, NO LONGER MAINTAINED. An abstract Java HTTP server for pretending to be a Couchbase Server node.
Java
17
star
74

cbforest

C++ wrapper library around ForestDB, for use in Couchbase Lite.
C++
17
star
75

dcp-documentation

couchbase unified protocol for replication
17
star
76

DeveloperDay

Couchbase Developer Day Sample Code By Language
Java
17
star
77

BLIP-Cpp

C++ implementation of BLIP network protocol
C++
16
star
78

couchbase-spark-samples

Examples on how to use the Couchbase Spark Connector
Scala
16
star
79

couchtalk-node

Example push-to-talk app using Couchbase Server, node.js, and the browser.
JavaScript
16
star
80

php-ext-couchbase

A PHP extension wrapping libcouchbase (work in progress)
C
16
star
81

try-cb-golang

Go
16
star
82

todolite-electron-pouchdb

Example to demonstrate Couchbase in an Electron desktop application with PouchDB
JavaScript
15
star
83

couchbase-spring-cache

An implementation for Spring Cache based on Couchbase Java SDK 2.x
15
star
84

mobile-testkit

Mobile QE Test Framework
Python
15
star
85

sync_gateway_admin_ui

Admin UI for Sync Gateway, submodule to couchbase/sync_gateway
JavaScript
15
star
86

couchbase-scala-client

The (not yet) Official Couchbase Scala SDK
Scala
14
star
87

pouchdb-angularjs-app

Sync data with Couchbase using AngularJS and PouchDB
JavaScript
14
star
88

ToDoLite-Xamarin-Forms

C#
14
star
89

couchbase-aspnet-identity

A custom storage provider for ASP.NET Identity that uses Couchbase Server as a storage medium.
C#
14
star
90

docs-ng

Official repository for Couchbase documentation
HTML
14
star
91

ionic2-web-chat

JavaScript
14
star
92

BLIP-Cocoa

Implementation of the BLIP messaging protocol, for iOS and Mac OS X
Objective-C
14
star
93

spring-data-couchbase

!! The project moved over to: https://github.com/springsource/spring-data-couchbase
Java
14
star
94

Couchbase-Lite-PhoneGap-Kit

HTML5 apps love JSON data, this is an easy starter kit for Cordova and Couchbase Lite
Objective-C
13
star
95

PicMapper

Reads EXIF data from your Camera Roll and adds thumbnails to Couchbase Lite for display in MapKit
Swift
13
star
96

restful-angularjs-java

An example of using the Java SDK for Couchbase with an AngularJS frontend
Java
13
star
97

cloud-formation

Templates for Couchbase software for the Amazon AWS CloudFormation
JavaScript
13
star
98

cboperator-hol

This repo will have hands-on labs for Couchbase Operator for different public cloud environments
Shell
13
star
99

Couchbase-Sync-Gateway-Postman-Collection

Postman Collections for Sync Gateway 3.0 REST Interface
13
star
100

bikeshop-cb

Node.js Example Application for Couchbase using the Ottoman ODM
JavaScript
12
star