TaskForge is a cross-platform command-line task manager built with Python and Typer. It provides a powerful interface for managing tasks with features like prioritization, due dates, tagging, and more.
- ✅ Create, view, edit, and delete tasks
- 🔄 Mark tasks as completed or uncompleted
- ⭐ Task prioritization (Low, Medium, High, Urgent)
- 📅 Set due dates for tasks
- 🏷️ Tag tasks for organization
- 📋 Filter tasks by completion status or tags
- ⏰ View upcoming tasks with due dates
- 📤 Export tasks to JSON files
- 📥 Import tasks from JSON files
- 📁 Archive and restore tasks
- ⏱️ Snooze tasks to postpone due dates
- 📋 Copy existing tasks
- 🔄 Sync tasks with Rubis scraps
- 📎 Attach files to tasks
- Ensure you have Python 3.8+ installed
- Clone this repository
- Set up a virtual environment:
python -m venv venv - Activate the virtual environment:
- Windows:
.\venv\Scripts\activate- macOS/Linux:
source venv/bin/activate - Install the required dependencies:
pip install typer rich pydantic python-dateutil colorama
TaskForge provides a simple and intuitive command-line interface. Here are some common commands:
python taskforge.py add "Complete project report" --desc "Finish the quarterly report" --priority high --due "2025-05-20 17:00" --tags "work,report,urgent"
# List pending tasks (default)
python taskforge.py list
# List all tasks
python taskforge.py list --all
# List completed tasks
python taskforge.py list --completed
# List tasks with a specific tag
python taskforge.py list --tag work
python taskforge.py info [TASK_ID]
python taskforge.py complete [TASK_ID]
python taskforge.py uncomplete [TASK_ID]
python taskforge.py edit [TASK_ID] --title "New title" --desc "New description" --priority medium --due "2025-06-01" --tags "updated,tags"
python taskforge.py delete [TASK_ID]
python taskforge.py remind
python taskforge.py prioritize [TASK_ID] --priority high
# or bump the priority up one level
python taskforge.py prioritize [TASK_ID] --bump
# Postpone a task by 1 day, 2 hours, and 30 minutes
python taskforge.py snooze [TASK_ID] 1d2h30m
# Archive a task
python taskforge.py archive [TASK_ID]
# List archived tasks
python taskforge.py list-archived
# Restore an archived task
python taskforge.py restore [TASK_ID]
python taskforge.py copy [TASK_ID] --due "2025-06-01" --tags "new,tags" --keep-tags
# Export tasks to a JSON file
python taskforge.py export tasks_backup.json
# Import tasks from a JSON file
python taskforge.py import tasks_backup.json
# Create a new sync
python taskforge.py sync create
# Update an existing sync
python taskforge.py sync update
# Import tasks from a Rubis scrap
python taskforge.py sync import [SCRAP_URL]
# View sync history
python taskforge.py sync history
TaskForge now supports file attachments for tasks!
- Attach any file to a task using the CLI.
- View all attached files in a colorful tree view.
- Open attached files directly from the CLI (if available locally).
- Attachments are stored in
%APPDATA%/TaskForge/attachments/{task_id}/on Windows. - When syncing, only the attachment tree (file names and presence) is included. Files themselves are not synced until cloud support is added.
- If you import a sync without attachments, you can still view which files should be attached, but cannot open them until the files are present locally.
# Attach a file to a task
python taskforge.py attach [TASK_ID] path/to/file.txt
# List all attachments for a task
python taskforge.py attachments [TASK_ID]
# Open an attached file (if available locally)
python taskforge.py open-attachment [TASK_ID] file.txt
To create some example tasks:
python taskforge.py demo
TaskForge stores task data locally in the data directory and offers integration with the Rubis service for cloud-based task synchronization.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.