Skip to main content

stapel-tasks

CI coverage pypi downloads python license llms.txt

Generic tasks and kanban boards: Board/Column/Task/ChecklistItem/TaskComment, a REST surface, a full outbox event surface, and custom fields via stapel-attributes. Usable standalone (a team runs a board by hand) or as the substrate an external orchestrator projects onto through opaque origin_* handles, a MOVE_POLICY authorization seam, and comm Functions (tasks.get/list_board/create/move/comment).

Part of the Stapel framework — composable Django apps that deploy as a monolith or as microservices without changing module code.

Install

pip install stapel-tasks

At a glance

Fact Value
Version 0.4.0
Python >=3.11 (3.11, 3.12, 3.13, 3.14)
Django djangorestframework>=3.14
HTTP operations 22
Config axes 3
Usage surface 28
Extension points 5
Error codes 57
Documented flows 3
Fleet dependencies stapel-attributes (optional) · stapel-core

Documentation

OpenAPI · capabilities.json · llms.txt (for agents)

What this is

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.

Quick start

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).

Two reads of the same cards, deliberately: GET boards/{id}/tasks is a keyset feed (-created_at), GET boards/{id}/cards is the board shape — columns in order, cards grouped by column key and sorted by position. A kanban view wants the second. GET boards/presets serves the vocabularies a board-creation form needs (presets, categories, checklist states, priority scale) instead of making the client hard-code them.

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
BOARD_CARDS_MAX 2000 Cap on the whole-board read (truncated beyond it)
PRIORITY_SCALE low/normal/high/urgent Priority steps served to clients

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

License

MIT — see LICENSE.


This page is assembled by stapel-readme from docs/readme.md plus the contract artifacts in docs/. Edit the prose in docs/readme.md; the badges, facts and links above and below it are generated — do not hand-edit README.md.

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.4.0.tar.gz (90.7 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.4.0-py3-none-any.whl (89.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: stapel_tasks-0.4.0.tar.gz
  • Upload date:
  • Size: 90.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for stapel_tasks-0.4.0.tar.gz
Algorithm Hash digest
SHA256 43cd9a61feb97f7adf931b3c2c8ccc3befff6822d7f59af701015c0077b1f06c
MD5 07de07e6d6941bac7875a11eedc6d4d8
BLAKE2b-256 c8ce43f8e8dcb377a18782e5376c6ee7462b9dc2a03d677916b3e344945ce638

See more details on using hashes here.

Provenance

The following attestation bundles were made for stapel_tasks-0.4.0.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.4.0-py3-none-any.whl.

File metadata

  • Download URL: stapel_tasks-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 89.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for stapel_tasks-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0608d6994c8f20f7c994cacc91c7f4f933e3f93098acb6776b4a92acb2afaaab
MD5 18c5a1f245588af8c7f97b639ad3cc09
BLAKE2b-256 a6cfba10c430c99d2a51319440d9103570285fefa358f1fa38d87f65eb2eba45

See more details on using hashes here.

Provenance

The following attestation bundles were made for stapel_tasks-0.4.0-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.

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 files

0.3.2

2 files

0.2.0

2 files

0.1.9

2 files

0.1.8

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page