Skip to main content

Core business logic and infrastructure for Taskdog

Project description

taskdog-core

Core business logic and infrastructure for Taskdog task management system.

Overview

This package contains the core components shared by both the Taskdog server and UI:

  • Domain Layer: Business entities, domain services, and interfaces
  • Application Layer: Use cases, queries, DTOs, and business logic orchestration
  • Infrastructure Layer: Persistence implementations, external service integrations
  • Controllers: Business logic orchestrators used by presentation layers

Installation

pip install taskdog-core

For development:

pip install -e ".[dev]"

Architecture

Follows Clean Architecture principles:

Domain (entities, services, repositories)
  ↑
Application (use cases, queries, DTOs)
  ↑
Infrastructure (SQLite, file storage)
  ↑
Controllers (orchestration layer)

Key Components

Domain Layer (taskdog_core/domain/):

  • Task - Core entity with status, priority, deadlines, dependencies
  • TaskStatus - PENDING, IN_PROGRESS, COMPLETED, CANCELED
  • TimeTracker - Records actual_start/actual_end timestamps
  • TaskNotFoundException, TaskValidationError - Domain exceptions

Application Layer (taskdog_core/application/):

  • Use Cases: CreateTaskUseCase, StartTaskUseCase, OptimizeScheduleUseCase, etc.
  • Validators: TaskFieldValidatorRegistry with Status and Dependency validators
  • Services: WorkloadAllocator, OptimizationSummaryBuilder, TaskQueryService
  • Optimization: 9 scheduling strategies (greedy, balanced, backward, priority_first, earliest_deadline, round_robin, dependency_aware, genetic, monte_carlo)

Infrastructure Layer (taskdog_core/infrastructure/):

  • SqliteTaskRepository - SQLite persistence with transactional writes
  • SqliteNotesRepository - Database-based notes storage
  • ConfigManager - TOML configuration loading

Controllers (taskdog_core/controllers/):

  • TaskCrudController - Create, update, delete operations
  • TaskLifecycleController - Start, complete, pause, cancel, reopen
  • TaskRelationshipController - Dependencies and tags
  • TaskAnalyticsController - Statistics and optimization
  • QueryController - Read-only operations

Usage Example

from taskdog_core.domain.entities.task import Task, TaskStatus
from taskdog_core.infrastructure.persistence.database.sqlite_task_repository import SqliteTaskRepository
from taskdog_core.controllers.task_crud_controller import TaskCrudController
from taskdog_core.infrastructure.config.config_manager import ConfigManager
from taskdog_core.shared.utils.logger import StandardLogger

# Setup
repository = SqliteTaskRepository("sqlite:///tasks.db")
config = ConfigManager()
logger = StandardLogger("example")

# Create controller
crud_controller = TaskCrudController(repository, config, logger)

# Create a task
from taskdog_core.application.dto.task_request import CreateTaskRequest
request = CreateTaskRequest(name="My Task", priority=100)
task = crud_controller.create_task(request)

Dependencies

  • holidays: Holiday checking for scheduling
  • python-dateutil: Date/time utilities
  • sqlalchemy: Database ORM

Related Packages

For detailed architecture documentation, see CLAUDE.md.

Testing

pytest tests/

License

MIT

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

taskdog_core-0.18.4.tar.gz (118.7 kB view details)

Uploaded Source

Built Distribution

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

taskdog_core-0.18.4-py3-none-any.whl (198.6 kB view details)

Uploaded Python 3

File details

Details for the file taskdog_core-0.18.4.tar.gz.

File metadata

  • Download URL: taskdog_core-0.18.4.tar.gz
  • Upload date:
  • Size: 118.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for taskdog_core-0.18.4.tar.gz
Algorithm Hash digest
SHA256 2a598eb5baed2219de5cbb72b4532442dce357d0ec5aa4751ea51579b3f6a2a3
MD5 340308b0fd719ba3d76cbd769030bb71
BLAKE2b-256 f3c74d42d737463debc3de8abd8fb4e20e19e387a7d17d40ffc8c53f1aca32b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskdog_core-0.18.4.tar.gz:

Publisher: release.yml on Kohei-Wada/taskdog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file taskdog_core-0.18.4-py3-none-any.whl.

File metadata

  • Download URL: taskdog_core-0.18.4-py3-none-any.whl
  • Upload date:
  • Size: 198.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for taskdog_core-0.18.4-py3-none-any.whl
Algorithm Hash digest
SHA256 14e6bd4e736b8736ed458f77ed306621eac08ddc50fac47efa367efc6ca84280
MD5 ffd0c0b872f3361344f4588b85f10dc8
BLAKE2b-256 9a5831dc90041b2f193296fb7f2f8542a73e96882a82dee8a450bd2500b13fa7

See more details on using hashes here.

Provenance

The following attestation bundles were made for taskdog_core-0.18.4-py3-none-any.whl:

Publisher: release.yml on Kohei-Wada/taskdog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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