The sync server for Taskchampion
Find a file
Dustin J. Mitchell 309abce339
Add taskchampion-sync-server-storage-postgres
This is built to be more robust than the SQLite storage, and to
integrate with other applications. The idea is that for example a web
application might interact with the same DB to create and delete clients
as customers come and go.
2025-07-14 12:37:50 -04:00
.github Add taskchampion-sync-server-storage-postgres 2025-07-14 12:37:50 -04:00
core More explicit requirements regarding add_version 2025-07-13 13:04:38 -04:00
docs Add mdbook documentation for the sync server 2025-07-13 17:39:19 -04:00
postgres Add taskchampion-sync-server-storage-postgres 2025-07-14 12:37:50 -04:00
server Merge pull request #126 from djmitche/async 2025-07-13 09:25:43 -04:00
sqlite Apply fixes from @ryneeverett 2025-07-14 12:30:01 -04:00
.dockerignore feat(docker): simplify docker compose for end users (#96) 2025-03-01 13:08:27 -05:00
.env Updates Rust version 2024-05-17 12:08:44 +02:00
.gitignore Import from https://github.com/GothenburgBitFactory/taskwarrior 2024-04-07 21:43:46 -04:00
.pre-commit-config.yaml Empty pre-commit config (#33) 2024-09-30 21:16:26 -04:00
Cargo.lock Add taskchampion-sync-server-storage-postgres 2025-07-14 12:37:50 -04:00
Cargo.toml Add taskchampion-sync-server-storage-postgres 2025-07-14 12:37:50 -04:00
CODE_OF_CONDUCT.md Import from https://github.com/GothenburgBitFactory/taskwarrior 2024-04-07 21:43:46 -04:00
CONTRIBUTING.md Update CONTRIBUTING.md issue link 2024-04-30 17:06:11 +01:00
docker-compose.yml v0.6.1 2025-03-03 22:41:40 +00:00
docker-entrypoint.sh Default DATA_DIR in entrypoint to match VOLUME in the Dockerfile 2025-07-09 14:58:11 +00:00
Dockerfile Make path to data folder consistent 2025-04-14 23:07:41 +01:00
LICENSE Import from https://github.com/GothenburgBitFactory/taskwarrior 2024-04-07 21:43:46 -04:00
README.md Add taskchampion-sync-server-storage-postgres 2025-07-14 12:37:50 -04:00
RELEASING.md Add taskchampion-sync-server-storage-postgres 2025-07-14 12:37:50 -04:00
SECURITY.md Use Signal instead of PGP to contact me securely (#52) 2024-11-16 13:40:35 -05:00

TaskChampion Sync-Server

TaskChampion is the task database Taskwarrior uses to store and sync tasks. This repository implements a sync server against which Taskwarrior and other applications embedding TaskChampion can sync.

Status

This project provides both pre-built images for common use-cases and Rust libraries that can be used to build more sophisticated applications. See the documentation for more on how to use this project.

Repository Guide

The repository is comprised of three crates:

  • taskchampion-sync-server-core implements the core of the protocol
  • taskchmpaion-sync-server-storage-sqlite implements an SQLite backend for the core
  • taskchmpaion-sync-server-storage-posrgres implements a Postgres backend for the core
  • taskchampion-sync-server implements a simple HTTP server for the protocol

Building From Source

Installing Rust

TaskChampion Sync-Server build has been tested with current Rust stable release version. You can install Rust from your distribution package or use rustup.

rustup default stable

The minimum supported Rust version (MSRV) is given in Cargo.toml. Note that package repositories typically do not have sufficiently new versions of Rust.

If you prefer, you can use the stable version only for installing TaskChampion Sync-Server (you must clone the repository first).

rustup override set stable

Building TaskChampion Sync-Server

To build TaskChampion Sync-Server binary simply execute the following commands.

git clone https://github.com/GothenburgBitFactory/taskchampion-sync-server.git
cd taskchampion-sync-server
cargo build --release

After build the binary is located in target/release/taskchampion-sync-server.

Building the Container

To build the container, execute the following commands.

source .env
docker build \
  --build-arg RUST_VERSION=${RUST_VERSION} \
  --build-arg ALPINE_VERSION=${ALPINE_VERSION} \
  -t taskchampion-sync-server .

Now to run it, simply exec.

docker run -t -d \
  --name=taskchampion \
  -p 8080:8080 \
  taskchampion-sync-server

This starts TaskChampion Sync-Server and publishes port 8080 to the host. Please note that this is a basic run, all data will be destroyed after stop and delete container. You may also set DATA_DIR, CLIENT_ID, or LISTEN with -e, e.g.,

docker run -t -d \
  --name=taskchampion \
  -e LISTEN=0.0.0.0:9000 \
  -p 9000:9000 \
  taskchampion-sync-server