| Crates.io | taskchampion |
| lib.rs | taskchampion |
| version | 2.0.3 |
| created_at | 2020-11-30 02:11:55.917356+00 |
| updated_at | 2025-02-25 13:01:49.893308+00 |
| description | Personal task-tracking |
| homepage | https://gothenburgbitfactory.github.io/taskchampion/ |
| repository | https://github.com/GothenburgBitFactory/taskchampion |
| max_upload_size | |
| id | 318061 |
| size | 3,332,406 |
This crate implements the core of TaskChampion, the replica.
Users of this crate can manipulate a task database using this API, including synchronizing that task database with others via a synchronization server.
Example uses of this crate:
A TaskChampion replica is a local copy of a user's task data. As the name suggests, several replicas of the same data can exist (such as on a user's laptop and on their phone) and can synchronize with one another.
Replicas are accessed using the [Replica] type.
Replicas access the task database via a storage object.
Create a storage object with [StorageConfig].
The [storage] module supports pluggable storage for a replica's data.
An implementation is provided, but users of this crate can provide their own implementation as well.
Replica synchronization takes place against a server.
Create a server with [ServerConfig].
The [server] module defines the interface a server must meet.
Several server implementations are included, and users can define their own implementations.
# use taskchampion::{storage::AccessMode, ServerConfig, Replica, StorageConfig};
# use tempfile::TempDir;
# fn main() -> anyhow::Result<()> {
# let taskdb_dir = TempDir::new()?;
# let taskdb_dir = taskdb_dir.path().to_path_buf();
# let server_dir = TempDir::new()?;
# let server_dir = server_dir.path().to_path_buf();
// Create a new Replica, storing data on disk.
let storage = StorageConfig::OnDisk {
taskdb_dir,
create_if_missing: true,
access_mode: AccessMode::ReadWrite,
}.into_storage()?;
let mut replica = Replica::new(storage);
// Set up a local, on-disk server.
let server_config = ServerConfig::Local { server_dir };
let mut server = server_config.into_server()?;
// Sync to that server.
replica.sync(&mut server, true)?;
#
# Ok(())
# }
Support for some optional functionality is controlled by feature flags.
server-aws - sync to Amazon Web Servicesserver-gcp - sync to Google Cloud Platformserver-sync - sync to the taskchampion-sync-serversync - enables all of the sync features abovebundled - activates bundling system libraries like sqlitetls-native-roots - use native (system) TLS roots, instead of those bundled with rustls, by
(indirectly) enabling the rustls feature rustls-tls-native-roots.By default, sync and bundled are enabled.
See the TaskChampion Book for more information about the design and usage of the tool.
This crate supports Rust version 1.81.0 and higher.