- Add GPL-3.0 LICENSE file - Update README with current project status (all 3 phases), fix structure - Update PLAN.md Phase 2 API signatures to match actual implementation - Add WebDAV & Sync section to docs/API.md - Update docs/DEVELOPMENT.md with Tauri app structure and setup - Add metadata (description, license, repository) to all Cargo.toml files - Update .gitignore with node_modules, .env, dist, build entries - Remove stale Cargo.lock from .gitignore (apps should track it) - Update example dates from 2025 to 2026 across all docs - Update CLAUDE.md date to 2026-03-30 |
||
|---|---|---|
| .idea | ||
| apps | ||
| crates | ||
| docs | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CLAUDE.md | ||
| LICENSE | ||
| PLAN.md | ||
| README.md | ||
Bevy Tasks
A local-first, cross-platform tasks application built with Rust. Inspired by Google Tasks, designed for speed and flexibility.
Core Principles
- Local-First: Your data, your folder, your control
- Fast: Sub-second startup, instant response
- Cross-Platform: Single codebase, all platforms
- Flexible: Multiple workspaces for different contexts
Project Structure
bevy-tasks/
├── Cargo.toml # Workspace definition
├── PLAN.md # Detailed project plan
├── README.md # This file
├── crates/
│ ├── bevy-tasks-core/ # Core library (backend)
│ └── bevy-tasks-cli/ # CLI frontend
├── apps/
│ └── tauri/ # Tauri v2 GUI (Svelte 5 + Tailwind CSS 4)
└── docs/
Project Status
- Phase 1 (Core + CLI): Complete
- Phase 2 (WebDAV Sync): Backend and CLI complete, GUI partially wired
- Phase 3 (GUI MVP): In progress — core task CRUD working, UI polished
Core Library (bevy-tasks-core)
- Data models (Task, TaskList, AppConfig, WorkspaceConfig)
- Markdown file I/O with YAML frontmatter
- Local storage with repository pattern
- Multiple workspace support
- Task ordering and grouping
- WebDAV sync with three-way diff and offline queue
- Platform keychain credential storage
CLI (bevy-tasks-cli)
- Workspace management (init, add, list, switch, remove, retarget, migrate)
- Task list management (create, show, delete)
- Task operations (add, complete, delete, edit)
- Group-by-due-date toggle
- WebDAV sync (setup, push, pull, status)
GUI (apps/tauri/)
- Tauri v2 + Svelte 5 + Tailwind CSS 4
- Task CRUD with animated transitions
- Drag-and-drop reordering
- Sliding lists drawer, settings popup
- Workspace switcher with add/remove
- Dark mode
Development Setup
Prerequisites
- Rust 1.70+ (install from rustup.rs)
- Git
- Node.js 18+ (for Tauri GUI)
Build
# Clone and build
git clone https://github.com/SteelDynamite/bevy-tasks.git
cd bevy-tasks
cargo build
# Run tests
cargo test -p bevy-tasks-core
# Run CLI
cargo run -p bevy-tasks-cli -- --help
# Run Tauri GUI
cd apps/tauri && npm install
npm run tauri dev
Quick Start
Initialize your first workspace
# Initialize a new workspace
cargo run -p bevy-tasks-cli -- init ~/Documents/Tasks --name personal
# This creates:
# - A workspace named "personal" at ~/Documents/Tasks
# - A default list called "My Tasks"
# - Sets "personal" as the current workspace
Add and manage tasks
# Add a task
cargo run -p bevy-tasks-cli -- add "Buy groceries"
# Add a task with due date
cargo run -p bevy-tasks-cli -- add "Review PR #123" --list "Work" --due "2026-11-15"
# List all tasks
cargo run -p bevy-tasks-cli -- list show
# Complete a task
cargo run -p bevy-tasks-cli -- complete <task-id>
# Edit a task (opens in $EDITOR)
cargo run -p bevy-tasks-cli -- edit <task-id>
# Delete a task
cargo run -p bevy-tasks-cli -- delete <task-id>
Manage workspaces
# Add another workspace
cargo run -p bevy-tasks-cli -- workspace add shared ~/Dropbox/TeamTasks
# List workspaces
cargo run -p bevy-tasks-cli -- workspace list
# Switch workspace
cargo run -p bevy-tasks-cli -- workspace switch shared
# Use specific workspace for a command
cargo run -p bevy-tasks-cli -- add "Team meeting" --workspace shared
Manage task lists
# Create a new list
cargo run -p bevy-tasks-cli -- list create "Work"
# Show tasks in a specific list
cargo run -p bevy-tasks-cli -- list show --list "Work"
# Delete a list
cargo run -p bevy-tasks-cli -- list delete "Work"
Data Format
Tasks are stored as markdown files with YAML frontmatter (Obsidian-compatible):
---
id: 550e8400-e29b-41d4-a716-446655440000
status: backlog
due: 2026-11-15T14:00:00Z
created: 2026-10-26T10:00:00Z
updated: 2026-10-26T12:30:00Z
---
Task description and notes go here in **markdown** format.
- Can include lists
- Rich formatting
- Links, etc.
File System Structure
~/Documents/Tasks/ # User-selected folder
├── .metadata.json # Global: list ordering, last opened list
├── My Tasks/ # Task list folder
│ ├── .listdata.json # List metadata: task order, id, timestamps
│ ├── Buy groceries.md # Individual task files
│ └── Call dentist.md
└── Work/
├── .listdata.json
├── Review PRs.md
└── Team meeting prep.md
Testing
Run the test suite:
# Run all tests
cargo test
# Run tests for specific crate
cargo test -p bevy-tasks-core
# Run tests with output
cargo test -- --nocapture
What's Next?
- Phase 4: Mobile support (iOS & Android via Tauri v2)
- Phase 5: GUI advanced features (subtasks, search, date picker)
- Phase 6: Mobile polish and platform-specific integrations
- Phase 7: Google Tasks importer and unique features
See PLAN.md for detailed roadmap.
License
GNU General Public License v3.0 (GPL-3.0)
This project is free and open-source software.