The sync server for Taskchampion
Find a file
Dustin J. Mitchell 6e8c72b543
Some checks failed
checks / Check & Clippy (push) Has been cancelled
checks / Rustdoc (push) Has been cancelled
checks / Formatting (push) Has been cancelled
checks / Cargo Semver Checks (push) Has been cancelled
checks / mdBook Documentation (push) Has been cancelled
docs / mdbook-deploy (push) Has been cancelled
tests - rust / rust 1.85.0 / postgres 17 (push) Has been cancelled
tests - rust / rust stable / postgres 17 (push) Has been cancelled
security / Audit Rust Dependencies (push) Has been cancelled
Merge pull request #129 from djmitche/postgres
Add `taskchampion-sync-server-storage-postgres`
2025-07-17 12:35:19 -04:00
.github Apply suggestions from code review 2025-07-17 12:00:22 -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 remove irrelevant assertions from test 2025-07-17 12:01:52 -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 Apply suggestions from code review 2025-07-17 12:00:22 -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
  • taskchampion-sync-server-storage-sqlite implements an SQLite backend for the core
  • taskchampion-sync-server-storage-postgres 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