Skip to main content

A CLI-based Task Scheduling Application

Project description

Task Scheduler

A CLI-based task scheduling application with interactive mode and visualization capabilities.

Features

  • Create/manage multiple independent schedulers
  • Define time slots with start/end times
  • Create tasks with deadlines, durations, and descriptions
  • Hierarchical task management with subtasks
  • Multiple visualization modes:
  • Gantt chart view
  • Calendar view
  • progress bars
  • deadline warnings
  • Automatic task scheduling with deadline awareness
  • Interactive terminal UI
  • Docker container support
  • JSON-based persistent storage

Installation

Local Installation (pip)

git clone https://github.com/yourusername/task_scheduler.git
cd task_scheduler
pip install -e .

Docker Installation

# Build image
docker build -t task-scheduler .

# Run with default command
docker run -it task-scheduler

# Run with specific command
docker run -it task-scheduler view_schedule MySchedule

Basic Usage

CLI Commands

Create new scheduler

task-scheduler create --name MySchedule

Add time slot

task-scheduler add_time_slot MySchedule
--start_time 2024-03-01T09:00
--end_time 2024-03-01T11:00

Add task with subtasks

task-scheduler add_task MySchedule
--name "Project X"
--description "Main project"
--duration 300
--deadline 2024-03-15T17:00

Generate schedule

task-scheduler schedule_tasks MySchedule

View visualizations

task-scheduler view_gantt MySchedule task-scheduler view_calendar MySchedule --month 3

Interactive Mode

Launch with:

task-scheduler interactive MySchedule

Controls:

↑/↓ - Navigate tasks

Enter - Select task

a - Add new task

m - Move task mode

q - Quit

Features:

Visual task hierarchy

Vim-based task editing

Drag-and-drop reorganization

Real-time progress updates

Color-coded deadlines

Controls:

Navigation

↑/↓ - Navigate items in focused panel Tab - Switch between task/time slot panels clicking on a task - selects the task

Actions

Enter - Select task/time slot a - Add new task/time slot (depending on focused panel) m - Enter move mode (tasks) / Modify slot (time slots)

General

q - Quit application

Key Features:

Dual-Pane Interface

📋 Left Panel - Task Hierarchy:
  • Visual tree structure with nested subtasks
⏱️ Right Panel - Time Slot Management:
  • Chronological schedule view
  • Duration calculations with time slot validation
  • Enhanced Editing
  • In-line time slot modification with instant validation
  • Drag-and-drop reorganization (tasks)
  • Keyboard-based time slot adjustments

New Features

  • Split-screen workflow management
  • Cross-panel task/time slot associations
  • Real-time schedule validation
  • Visual focus indicators (highlighted panel borders)
  • Smart time slot sorting and gap detection

Feedback & Safety

  • Instant save confirmation toasts
  • Undo/redo stack for critical operations

Data Format

data format for information fully describing the scheduler instance - JSON

example:

{
  "schedule_name": "MySchedule",
  "time_slots": [
    {
      "start_time": "2024-03-01T09:00:00",
      "end_time": "2024-03-01T11:00:00"
    }
  ],
  "tasks": [
    {
      "name": "Design Phase",
      "description": "Initial design work",
      "deadline": "2024-03-05T17:00:00",
      "duration": 360,
      "completion": 45,
      "subtasks": [
        {
          "name": "UI Mockups",
          "duration": 120,
          "completion": 75
        }
      ]
    }
  ]
}

Visualisation Examples

Gantt Chart

task-scheduler view_gantt MySchedule

Calendar View

task-scheduler view_calendar MySchedule --month 3

Task Progress

task-scheduler view_task MySchedule "Design Phase"

output:

=== Task Details: Design Phase ===

Name: Design Phase Deadline: 2024-03-05T17:00:00 Completion: 45.0% Duration: 360 min Subtasks: ['UI Mockups'] Description: Initial design work

Testing

python -m pytest tests/ -v

Docker Support

The Docker image includes:

Pre-configured Python environment

Automatic dependency installation

Persistent data storage

Built-in test execution

To mount local data directory:

To build the docker image run:

docker build -t task-scheduler .
docker run -v $(pwd)/data:/app/data -it task-scheduler

Requirements

Python 3.7+

colorama

urwid

pytest (for testing)

Contributing

Fork the repository

Create your feature branch (git checkout -b feature/awesome-feature)

Commit your changes (git commit -am 'Add awesome feature')

Push to the branch (git push origin feature/awesome-feature)

Open a Pull Request

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

task_scheduler_x-1.0.11.tar.gz (23.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

task_scheduler_x-1.0.11-py3-none-any.whl (24.3 kB view details)

Uploaded Python 3

File details

Details for the file task_scheduler_x-1.0.11.tar.gz.

File metadata

  • Download URL: task_scheduler_x-1.0.11.tar.gz
  • Upload date:
  • Size: 23.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.8

File hashes

Hashes for task_scheduler_x-1.0.11.tar.gz
Algorithm Hash digest
SHA256 145adaf317b7b2ef2d896747ed7585405c8ab8634e73833e19cc5c30d8787a0a
MD5 6baaec527f8479114777985b9110f33f
BLAKE2b-256 6a46086585cc91b1628a098bb091ca6b14a07f2b1c9666e5aa50729eb0b0dc3d

See more details on using hashes here.

File details

Details for the file task_scheduler_x-1.0.11-py3-none-any.whl.

File metadata

File hashes

Hashes for task_scheduler_x-1.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 2da8a025e9f5d6d8e8a30b9a25ceb5fc1e9d18b107522337e1eda64b4b9801fe
MD5 b1dba0848f7e07452c1a853a4b4d2c62
BLAKE2b-256 02cec0215a1ba636ebd0d573150d5dc2ea3d12241d4e65ad66f2f50006898fbb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page