A peer-to-peer, CRDT‑backed command‑line To‑Do list application written in Rust. RustyTasks leverages Automerge for conflict‑free data replication and experiments with secure, decentralized synchronization over TCP using tokio.
- CRUD Tasks: Create, read, update (mark done), and delete tasks.
- CRDT Sync: Underlying Automerge document for conflict‑free merges.
- Persistence: Automatic save/load of task history to disk.
- P2P Networking: Secure synchronization between peers via TCP.
- Asynchronous: Uses tokio for efficient and non-blocking communication
- Extensible: Modular
tasks,crdt, andnetworkcomponents. - Offline support: This can be used offline as a standalone application.
USAGE:
rustytasks [OPTIONS]
COMMANDS:
--interactive Start the application in the interactive mode
--list List all tasks
--add <TASK> Add a task to the task-list
--remove <TASKID> Remove a task from the task-list
--done <TASKID> Mark a task as done
OPTIONS:
-h, --help Print help information
Run any command except --interactive to use the application offline.
Run --interactive or run without any option to use the online mode.
- Default data file:
autocommit_doc.automergein current directory.
├── Cargo.toml # Project metadata & dependencies
├── src
│ ├── main.rs # CLI & entry point
│ ├── tasks.rs # Task struct & operations
│ ├── crdt.rs # Automerge integration
│ └── network.rs # P2P networking (WIP)
| └── identity.rs # Creates an identity for the peer
| └── cli.rs # clap config for cli
| └── sync.rs # Synchronization related functionality
| └── tasks.rs # Manages the local Task vector
- Automatic peer discovery
- Enhanced conflict resolution
- Task priorities & due dates
- Reminder/notification support
- Optional TUI (via
tui-rs)
Contributions are welcome! Please:
- Fork the repository.
- Create a feature branch (
git checkout -b feature/YourFeature). - Commit your changes (
git commit -m 'Add YourFeature'). - Push to the branch (
git push origin feature/YourFeature). - Open a Pull Request.
Happy tasking with RustyTasks!