Skip to main content

Generic tasks and kanban boards for the Stapel framework

Project description

stapel-tasks

CI codecov PyPI

Generic tasks and kanban boards for the Stapel framework — composable Django apps that deploy as a monolith or as microservices without changing module code.

A generic task domain — Board / Column / Task / ChecklistItem / TaskComment, a REST surface, a full outbox event surface, and custom fields via stapel-attributes. It is useful to any project by itself (a team runs a board by hand), and it is the substrate an orchestrator projects onto: an external state machine drives cards through opaque origin_* handles and the MOVE_POLICY seam — the module knows nothing about the machine.

Install

pip install stapel-tasks              # core
pip install "stapel-tasks[attributes]"  # + typed custom-field validation
INSTALLED_APPS = [
    # ...
    "stapel_tasks",
]

# urls.py
path("tasks/", include("stapel_tasks.urls"))

Requires a stapel-core whose background taskstore app uses the label stapel_taskstore — this module owns the Django label stapel_tasks. See MODULE.md.

Concepts

  • Board — an ordered set of columns and the cards on them. Owns the custom-field schema (feature_defs) and optional workflow settings.
  • Column — a status. Its key is the card's status; its category (backlog/active/review/waiting/done) is the fixed machine semantic.
  • Task (card) — status = its column; order within the column is a fractional position (drag-and-drop moves write one row). Custom-field values live in features; a projecting system writes origin_meta.
  • Move — drag-and-drop is a move validated by MOVE_POLICY: allow / deny(reason_key) / defer (the managed-card path).
from stapel_tasks import services

board = services.create_board(name="Team", preset="simple")
card = services.create_task(board=board, title="Ship it")
services.move_task(card, to_column=board.columns.get(key="done"))  # emits task.completed

comm surface

Kind Name Purpose
Emit task.created / task.updated / task.moved / task.assigned / task.completed / task.comment_added / task.checklist_item_changed / task.archived Card lifecycle facts (via the outbox)
Consume user.deleted GDPR anonymization
Function tasks.get / tasks.list_board / tasks.create / tasks.move / tasks.comment Machine interface / MCP-tool candidates

Settings (STAPEL_TASKS)

Key Default What it customizes
SCOPE_PROVIDER single global scope, allow-all Tenancy resolution/filtering + permissions
MOVE_POLICY allow any move (honours transitions) Drag-and-drop authorization
BOARD_PRESETS {} (merged over built-in simple) Board-shape presets
STORE_UNKNOWN_FEATURES True Keep raw custom fields when attributes is absent
DEFAULT_PAGE_SIZE 100 Card-list page size

See MODULE.md for the full seam map (providers, registries, serializer seams, comm tables, anti-patterns, override-vs-upstream).

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

stapel_tasks-0.1.4.tar.gz (45.3 kB view details)

Uploaded Source

Built Distribution

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

stapel_tasks-0.1.4-py3-none-any.whl (49.0 kB view details)

Uploaded Python 3

File details

Details for the file stapel_tasks-0.1.4.tar.gz.

File metadata

  • Download URL: stapel_tasks-0.1.4.tar.gz
  • Upload date:
  • Size: 45.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for stapel_tasks-0.1.4.tar.gz
Algorithm Hash digest
SHA256 64692db5572cc91bbc23866f4f61136b1f4ff732576346de7e239fd9b491a385
MD5 3abffe8fd1a2e17735931570eb0f7b63
BLAKE2b-256 9a85915386c64a006e85b92d2f95a339f76f41091d2ef01c6317c1cd9ab5e21d

See more details on using hashes here.

Provenance

The following attestation bundles were made for stapel_tasks-0.1.4.tar.gz:

Publisher: publish.yml on usestapel/stapel-tasks

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

File details

Details for the file stapel_tasks-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: stapel_tasks-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 49.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for stapel_tasks-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 635c22c77d3d33973fe1a86f505624c1e0d6b147e0a57301da75a1a8ba86f5b1
MD5 19c00da09b149591ec2a6419ed1d10a5
BLAKE2b-256 d0d82652c28e8f3a65b5dc5c85a7a4e1ff2660344d2925f2281d8c62a6f6c203

See more details on using hashes here.

Provenance

The following attestation bundles were made for stapel_tasks-0.1.4-py3-none-any.whl:

Publisher: publish.yml on usestapel/stapel-tasks

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