# tokidoki Tokidoki is a (WIP) carddav and caldav server. ## Architecture Tokidoki relies on [go-webdav][1] for the protocol implementation. It provides the storage backend and authentication, both of which are easily pluggable. It currently provides: Authentication: * IMAP (working) * PAM (working, enabled via the `pam` build tag) Storage: * Filesystem (working) * PostgreSQL (planned) [1]: https://github.com/emersion/go-webdav "go-webdav project page on Github" ## Building * Without PAM backend: `go build ./cmd/tokidoki/` * With PAM backend: `go build -tags pam ./cmd/tokidoki/` ## Running Here are some examples to get you started: Using the IMAP authentication backend and the filesystem storage backend (directory must exist), listening on port 8080 on all interfaces, with debug logs enabled: ``` ./tokidoki -addr ":8080" -auth.url imaps://imap.example.com:993 -storage.url file:///path/to/storage -log.debug ``` Using the PAM authentication backend and TLS: ``` ./tokidoki -addr ":8080" -auth.url pam:// -storage.url file:///path/to/storage -cert cert.pem -key key.pem ``` Regular logs are sent to stderr, HTTP logs are sent to stdout. Structured logging can be enabled for the regular logs with `-log.json`. ## Clients Tokidoki does not yet support all CalDAV/CardDAV features, but tries to support the subset to make most major clients work. The following clients are considered "supported": * Evolution (contacts & calendar) * Thunderbird (calendar) with CardBook extension (contacts) * DavX5 (contacts & calendar) ## Usage Only a single address book and calendar per user are supported at the moment, this is currently a [limitation in go-webdav][2]. Tokidoki supports calendar and address book auto-discovery via `/.well-known/caldav` and `/.well-known/carddav` respectively, as defined in [RFC 6764, section 6][3]. Hence, most clients should be able to discover resources by just pointing them at the server root. [2]: https://github.com/emersion/go-webdav/issues/26 [3]: https://datatracker.ietf.org/doc/html/rfc6764#section-6 ## Contact See the [tokidoki project page][4] for up-to-date information. Patches can be submitted to the [tokidoki-devel mailing list][5]. For general discussion, please use the [tokidoki-discuss mailing list][6]. [4]: https://sr.ht/~sircmpwn/tokidoki [5]: mailto:~sircmpwn/tokidoki-dev@lists.sr.ht [6]: mailto:~sircmpwn/tokidoki-discuss@lists.sr.ht