A stunning terminal-based task manager
Organize your tasks, lists, and tags β all from your terminal.
- β¨ Features
- π Quick Start
- π» CLI Commands
- β¨οΈ Keybindings
- π¨ Themes
- π€ Export Formats
- βοΈ Sync (Optional)
- ποΈ Architecture
- π§ Building from Source
- π€ Contributing
- π License
|
Create, edit, and complete tasks with titles, descriptions, URLs, and priority levels. Organize tasks into lists with custom icons. Default Inbox for quick capture. Add colorful tags for flexible categorization and filtering. |
A gorgeous terminal interface with vim-style navigation and real-time updates. Script your task management with powerful command-line tools. Export to JSON, todo.txt, Markdown, or CSV formats. |
| Feature | Description |
|---|---|
| β‘ Priority Levels | Low, Medium, High, Urgent |
| π Task URLs | Attach links and open them with o |
| π¨ 15 Built-in Themes | From Dracula to Cyberpunk |
| βοΈ Settings Dialog | Configure sync, notifications, and themes in-app |
| πΎ SQLite Storage | Fast, reliable, self-contained |
| π Filter & Search | By list, tag, or completion status |
| β Toggle Completed | Show/hide completed tasks |
| π Due Dates | Set deadlines for your tasks |
| π Desktop Notifications | Alerts for due and overdue tasks |
| π Auto-Update | Check for updates from TUI or CLI |
| βοΈ Optional Sync | Self-hosted sync server for multiple devices |
git clone https://github.com/ricardodantas/tickit
cd tickit
cargo install --path .cargo install tickitSimply launch the TUI:
tickitYour tasks are stored in SQLite at ~/.config/tickit/tickit.sqlite.
Tickit provides a full CLI for scripting and quick actions.
# Simple task
tickit add "Buy groceries"
# With priority and list
tickit add "Review PR" --priority high --list Work
# With URL and tags
tickit add "Read article" --url "https://example.com" --tags reading,tech
# With description
tickit add "Write report" --description "Q4 summary for the team"# Show incomplete tasks
tickit list
# Include completed tasks
tickit list --all
# Filter by list
tickit list --list Work
# Filter by tag
tickit list --tag urgent
# Output as JSON
tickit list --json# Mark as complete (partial match supported)
tickit done "Buy groceries"
# Mark as incomplete
tickit undo "Buy groceries"# Delete with confirmation
tickit delete "Old task"
# Skip confirmation
tickit delete "Old task" --force
# Short alias
tickit rm "Old task" -f# List all lists
tickit lists
# Add a new list
tickit lists add "Shopping" --icon "π"
# Delete a list
tickit lists delete "Old List"# List all tags
tickit tags
# Add a new tag
tickit tags add "urgent" --color "#ff0000"
# Delete a tag
tickit tags delete "old-tag"# Export to JSON (default)
tickit export --output tasks.json
# Export to todo.txt format
tickit export --format todotxt
# Export to Markdown
tickit export --format markdown --output tasks.md
# Export specific list to CSV
tickit export --format csv --list Work --output work.csv# Check for updates and install if available
tickit updateThe update command automatically detects whether you installed via Cargo or Homebrew and uses the appropriate update method.
| Key | Action |
|---|---|
Tab |
Next view |
Shift+Tab |
Previous view |
1 2 3 |
Jump to view (Tasks, Lists, Tags) |
s |
Open settings |
t |
Open theme picker |
A |
About Tickit |
? / F1 |
Show help |
S / Ctrl+s |
Sync with server (if configured) |
q |
Quit |
Ctrl+c / Ctrl+q |
Force quit |
| Key | Action |
|---|---|
β / k |
Move up |
β / j |
Move down |
β / h |
Focus sidebar |
β / l |
Focus main |
g / Home |
Go to first item |
G / End |
Go to last item |
| Key | Action |
|---|---|
Enter / Space |
Toggle task complete |
n |
Create new task |
e |
Edit selected task |
d / Delete |
Delete selected task |
p |
Cycle priority |
o |
Open task URL |
c |
Toggle show completed |
r |
Refresh |
| Key | Action |
|---|---|
n |
Create new item |
e |
Edit selected item |
d / Delete |
Delete selected item |
| Key | Action |
|---|---|
Tab |
Next field |
Shift+Tab |
Previous field |
Enter |
Save task |
Esc |
Cancel |
Space |
Toggle tag (in Tags field) |
j / k |
Navigate options |
Tickit includes 15 beautiful themes based on popular terminal and editor color schemes.
Press t in the TUI to open the theme picker with live preview.
| Theme | Description |
|---|---|
| π¦ Dracula | Dark purple aesthetic (default) |
| π One Dark Pro | Atom's iconic dark theme |
| βοΈ Nord | Arctic, bluish color palette |
| π± Catppuccin Mocha | Warm pastel dark theme |
| β Catppuccin Latte | Warm pastel light theme |
| πΈ Gruvbox Dark | Retro groove colors |
| π Gruvbox Light | Retro groove, light variant |
| π Tokyo Night | Futuristic dark blue |
| π Solarized Dark | Precision colors, dark |
| π Solarized Light | Precision colors, light |
| π¨ Monokai Pro | Classic syntax highlighting |
| πΉ RosΓ© Pine | All natural pine with soho vibes |
| π Kanagawa | Inspired by Katsushika Hokusai |
| π² Everforest | Comfortable green forest theme |
| π Cyberpunk | Neon-soaked futuristic theme |
Full data export with all fields β perfect for backups or integrations.
tickit export --format json --output tasks.json{
"tasks": [
{
"id": "...",
"title": "Buy groceries",
"priority": "high",
"completed": false,
"list": "Shopping",
"tags": ["errands"]
}
]
}Compatible with the todo.txt format:
(A) 2024-01-01 Task title +Project @context due:2024-01-15
tickit export --format todotxtHuman-readable format with checkboxes:
## π₯ Inbox
- [ ] π΄ Urgent task
- [x] Completed task
## π Work
- [ ] π‘ Review PRtickit export --format markdownSpreadsheet-compatible format for Excel, Google Sheets, etc.
tickit export --format csv --output tasks.csvTickit is a single binary with both CLI and TUI modes.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββ΄ββββββββββββββββ
βΌ βΌ
βββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ
β tickit (TUI) β β tickit <cmd> (CLI) β
β β’ Browse tasks β β β’ Add tasks β
β β’ Manage lists/tags β β β’ List/filter tasks β
β β’ Change themes β β β’ Complete/delete β
β β’ Visual editing β β β’ Export data β
βββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ
β β
βββββββββββββββββ¬ββββββββββββββββ
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SQLite Database β
β ~/.config/tickit/tickit.sqlite β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββ ββββββββββββββββββββ
β Lists β β Tags β
β β’ id β β β’ id β
β β’ name β β β’ name β
β β’ icon β β β’ color β
β β’ is_inbox β ββββββββββββββββββββ
ββββββββββββββββββββ β
β β
β 1:N β M:N
βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Tasks β
β β’ id, title, description, url β
β β’ priority (Low, Medium, High, Urgent) β
β β’ completed, completed_at β
β β’ list_id, tag_ids[] β
β β’ due_date, created_at, updated_at β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| File | Path | Purpose |
|---|---|---|
| Database | ~/.config/tickit/tickit.sqlite |
Tasks, lists, tags |
| Config | ~/.config/tickit/config.toml |
Theme and settings |
| Device ID | ~/.config/tickit/.device_id |
Unique device identifier for sync |
Tickit can sync your tasks across multiple devices using a self-hosted sync server.
Sync is completely optional. Tickit works fully offline by default.
-
Deploy tickit-sync server β see github.com/ricardodantas/tickit-sync
-
Generate an API token:
tickit-sync token --name "my-laptop" -
Configure Tickit client (
~/.config/tickit/config.toml):[sync] enabled = true server = "https://your-server.com" token = "your-generated-token" interval_secs = 300 # auto-sync every 5 minutes
-
Manual sync: Press
S(Shift+S) orCtrl+Sin the TUI -
Or configure in-app: Press
sto open Settings and toggle sync options
- Self-hosted: Run on your own server, keep your data private
- Multi-device: Sync between desktop, laptop, and mobile (tickit-mobile)
- Conflict resolution: Last-write-wins with conflict detection
- Offline-first: Changes sync when connection is available
- In-app settings: Toggle sync, adjust interval from the Settings dialog
- Rust 1.93+ (uses Edition 2024 features)
- Linux, macOS, or Windows
# Clone the repository
git clone https://github.com/ricardodantas/tickit
cd tickit
# Build release binary
cargo build --release
# The binary will be at:
# - target/release/tickit
# Or install directly
cargo install --path .# Run TUI in development
cargo run
# Run CLI commands
cargo run -- add "Test task"
cargo run -- list
# Run tests
cargo test
# Run linter
cargo clippy
# Format code
cargo fmtContributions are welcome!
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Run tests:
cargo test - Run clippy:
cargo clippy - Format:
cargo fmt - Commit:
git commit -m "Add amazing feature" - Push:
git push origin feature/amazing-feature - Open a Pull Request
tickit/
βββ src/
β βββ main.rs # CLI entry point
β βββ lib.rs # Library root
β βββ app/ # TUI application
β β βββ mod.rs # App initialization
β β βββ events.rs # Key event handling
β β βββ state.rs # Application state
β β βββ ui.rs # UI rendering
β βββ config.rs # Configuration loading
β βββ db.rs # SQLite operations
β βββ export.rs # Export formats
β βββ models.rs # Data models
β βββ theme.rs # Color themes
βββ screenshots/ # Screenshots for docs
βββ scripts/ # Helper scripts
βββ tests/ # Integration tests
This project is licensed under the MIT License β see the LICENSE file for details.
Built with π¦ Rust and β€οΈ by Ricardo Dantas
