README.rdoc

Divan, a C# library for CouchDB

Divan is a C# library under the MIT license for using CouchDB. It should be more or less API
complete including bulk operations, attachments, views and design documents
etc. It is quite fast and designed to be flexible but not bloated.

Divan has mainly been developed in-house at Foretagsplatsen and is being used
in the new core system at Foretagsplatsen. It has unit tests (although
could benefit from more) and at least one sample console project included.

License

Divan is under the MIT-license, see file LICENSE.txt.

Features

More or less complete CouchDB API implemented including bulk and
attachments.

Has classes for design documents and view definition so you can create and
manipulate your views from C#.

Has LINQ support (limited) thanks to Alex Pedenko! This means you can write
a subset of queries in LINQ syntax.

Has basic CouchDB-Lucene integration for making free text indexes and query
them.

Offers several “hooks” for your own subclasses in order to add
specializations.

Does it work under Mono?

You bet. Foretagsplatsen uses mainly windows (Visual Studio 2008 and .Net
3.5) but Divan is meant to work fine in Mono too. Currently Mono has a bug
in System.dll regarding HEAD HTTP requests so we detect if we are
running in Mono and then we fall back on using a regular GET.

Note that this bug has been reported and fixed in Mono trunk and
should be available in any mono release after 2.4.2.3 (I guess). Then we
will remove that check.

Getting started

Install git of course… and clone Divan. The “official” repository is the
one from Foretagsplatsen and we only have one branch there so far, and no
tags yet:

git clone git://github.com/foretagsplatsen/Divan.git

If you are on VS2008 or Monodevelop then I suggest double clicking the
Divan.sln. Hopefully the rest works out fine.

If you are on Mono “CLI style” then the configure/Makefile should work as
expected, it is “vanilla generated” from Monodevelop. Then you can also run
the basic unit tests, but note that these rely on a couchdb running
locally:

nunit-console2 -labels -run=Divan.CouchTest src/bin/Debug/Divan.dll

Run the “Trivial” sample console app. You can point it at a running CouchDB
server:

C:DivansamplesTrivial>binDebugTrivial.exe 192.168.9.205 5984

Happy coding! And ask any questions on the mailinglist.

What about documentation?

At the moment documentation is… this file! :) But there are unit tests in
CouchTest.cs and CouchLuceneTest.cs and there is at least one sample
project showing basic usage. One more sample with more advanced usage is
coming soon. Blog articles:

One blog article
on how to install Couchdb-Lucene and test it with Divan.

Mailinglist

We have set up a regular Mailman mailinglist for users
and developers alike, please subscribe!

Roadmap

Apart from polishing and fixing bugs the following pieces are on the
todolist:

Optional automatic JSON serialization.

Optional mirroring of design documents from external files instead of
defining them as literal strings in C#.

Splitting out the tests into their own project.

Writing a tutorial and a sample project showing the advanced mechanisms.

Contributing

…is simple. All contributions should be under the MIT license. Just
fork and make pull requests and we will try to integrate. Feel free to
bring up anything on the mailinglist. We haven't started using any
issue tracker yet, but we will if it gets more popular and we when we do a
proper release.