bbook is the internal Adfinis contact address book. It fetches customer contacts from Zoho CRM and makes them available in three ways: a searchable web page, for download, and a read-only CardDAV address book that can be added to mail clients.
The application is a single Go binary that runs an HTTP server. Around it:
- PostgreSQL stores the contacts. The schema is managed through migrations applied on startup.
- Zoho CRM is the source of truth. A background job fetches the contacts at a fixed interval and upserts them into the database.
- OIDC handles login for the web interface. In the docker-compose there is a preconfigured Keycloak for development.
- Search runs in memory. The index is rebuilt from the database on startup and queried by the web interface and the CardDAV endpoint.
- CardDAV is served under
/api/dav. Mail clients authenticate with per-client tokens that users generate from the UI. - Helm chart for deployment on a Kubernetes cluster.
Most environment variables are already filled out for development in .env, .db.env and .backend.env. Check the files for additional configuration options.
The included Keycloak instance is preconfigured with a realm, client and a test user (username: dev, password: dev)
You can start right away:
cd docker
docker compose upTo create a new release, merge to the release branch.
