π Table of Contents
- β¨ Features
- π Quick Start
- π» CLI Commands
- β¨οΈ Keybindings
- π¨ Themes
- π€ Export Formats
- βοΈ Sync (Optional)
- ποΈ Architecture
- π§ Building from Source
- π€ Contributing
- π License
β¨ Features
π Task Management
Create, edit, and complete tasks with titles, descriptions, URLs, and priority levels.
π Lists
Organize tasks into lists with custom icons. Default Inbox for quick capture.
π·οΈ Tags
Add colorful tags for flexible categorization and filtering.
π₯οΈ Beautiful TUI
A gorgeous terminal interface with vim-style navigation and real-time updates.
β¨οΈ Full CLI
Script your task management with powerful command-line tools.
π€ Export Anywhere
Export to JSON, todo.txt, Markdown, or CSV formats.
Feature Highlights
| 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 |
| πΎ 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 |
| π Auto-Update | Check for updates from TUI or CLI |
| βοΈ Optional Sync | Self-hosted sync server for multiple devices |
π Quick Start
Installation
From Source
From crates.io (coming soon)
First Run
Simply launch the TUI:
Your tasks are stored in SQLite at ~/.config/tickit/tickit.sqlite.
π» CLI Commands
Tickit provides a full CLI for scripting and quick actions.
Adding Tasks
# Simple task
# With priority and list
# With URL and tags
# With description
Listing Tasks
# Show incomplete tasks
# Include completed tasks
# Filter by list
# Filter by tag
# Output as JSON
Completing Tasks
# Mark as complete (partial match supported)
# Mark as incomplete
Deleting Tasks
# Delete with confirmation
# Skip confirmation
# Short alias
Managing Lists
# List all lists
# Add a new list
# Delete a list
Managing Tags
# List all tags
# Add a new tag
# Delete a tag
Exporting Tasks
# Export to JSON (default)
# Export to todo.txt format
# Export to Markdown
# Export specific list to CSV
Updating Tickit
# Check for updates and install if available
The update command automatically detects whether you installed via Cargo or Homebrew and uses the appropriate update method.
β¨οΈ Keybindings
Global
| Key | Action |
|---|---|
Tab |
Next view |
Shift+Tab |
Previous view |
1 2 3 |
Jump to view (Tasks, Lists, Tags) |
t |
Open theme picker |
A |
About Tickit |
? / F1 |
Show help |
Ctrl+s |
Sync with server (if configured) |
q |
Quit |
Ctrl+c / Ctrl+q |
Force quit |
Navigation
| 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 |
Tasks View
| 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 |
Lists/Tags View
| Key | Action |
|---|---|
n |
Create new item |
e |
Edit selected item |
d / Delete |
Delete selected item |
Task Editor
| Key | Action |
|---|---|
Tab |
Next field |
Shift+Tab |
Previous field |
Enter |
Save task |
Esc |
Cancel |
Space |
Toggle tag (in Tags field) |
j / k |
Navigate options |
π¨ Themes
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.
Available Themes
| 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 |
π€ Export Formats
JSON
Full data export with all fields β perfect for backups or integrations.
todo.txt
Compatible with the todo.txt format:
(A) 2024-01-01 Task title +Project @context due:2024-01-15
Markdown
Human-readable format with checkboxes:
- -
-
CSV
Spreadsheet-compatible format for Excel, Google Sheets, etc.
ποΈ Architecture
Tickit 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 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Data Model
ββββββββββββββββββββ ββββββββββββββββββββ
β 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 Locations
| 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 |
βοΈ Sync (Optional)
Tickit can sync your tasks across multiple devices using a self-hosted sync server.
Sync is completely optional. Tickit works fully offline by default.
Setting Up Sync
-
Deploy tickit-sync server β see github.com/ricardodantas/tickit-sync
-
Generate an API token:
-
Configure Tickit client (
~/.config/tickit/config.toml):[] = true = "https://your-server.com" = "your-generated-token" = 300 # auto-sync every 5 minutes -
Manual sync: Press
Ctrl+Sin the TUI
Sync Features
- Self-hosted: Run on your own server, keep your data private
- Multi-device: Sync between desktop, laptop, and (future) mobile
- Conflict resolution: Last-write-wins with conflict detection
- Offline-first: Changes sync when connection is available
π§ Building from Source
Requirements
- Rust 1.93+ (uses Edition 2024 features)
- Linux, macOS, or Windows
Build
# Clone the repository
# Build release binary
# The binary will be at:
# - target/release/tickit
# Or install directly
Development
# Run TUI in development
# Run CLI commands
# Run tests
# Run linter
# Format code
π€ Contributing
Contributions are welcome!
Quick Start for Contributors
- 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
Project Structure
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
π License
This project is licensed under the MIT License β see the LICENSE file for details.