Skip to content

Kanban Cards Module

Kanban Cards manage physical and digital kanban cards used in lean manufacturing and inventory management. Cards signal the need to replenish inventory, initiate production, or trigger material movement between process steps.

  • Items Module: References the item a card represents
  • Serial Number Service: Generates unique identifiers for physical cards
  • Facilities Module: Tracks card location within warehouses and production areas

PlantUML diagram

OpenAPI specification: https://stage.alpha002.io.arda.cards/v1/kanban/docs/redoc/index.html#tag/v1

Universes configured with EntityServiceConfiguration accept both JSON field paths (camelCase) and database column names (snake_case) as locators. The table below shows both forms. See Query DSL: EntityServiceConfiguration.

JSON Field PathColumn NameTypeDescription
eIdeiduuidEntity UUID
serialNumberkanban_card_snStringCard serial number
itemReference.entityIditem_reference_entity_iduuidAssociated item entity ID
itemReference.itemNameitem_reference_item_nameStringAssociated item name
cardQuantity.amountcard_quantity_amountDecimalInventory quantity represented
cardQuantity.unitcard_quantity_unitStringInventory unit of measure
requestLocation.facilityphysical_locator_facilityStringCurrent facility
requestLocation.departmentphysical_locator_departmentStringCurrent department
requestLocation.locationphysical_locator_locationStringCurrent location
statusstatusStringCurrent card status
printStatusprint_statusStringCurrent print status
iduuidRecord ID (bitemporal)
effective_as_ofTIMESTAMPBitemporal effective timestamp
recorded_as_ofTIMESTAMPBitemporal recorded timestamp
retiredBOOLEANWhether logically deleted
tenant_iduuidOwning tenant
last_event_*variousFields describing the most recent lifecycle event
last_print_event_*variousFields describing the most recent print event

KanbanCardService implements DataAuthorityService<KanbanCard, KanbanCardMetadata>.

  • create, read, update, delete
  • list, count, history
  • summaryByStatus — aggregates cards by status with quantity totals
  • listWithDetails — returns cards with full item details

Two specialized lifecycle interfaces:

KanbanCardLifecycle — operational state transitions:

REQUESTED -> ACCEPTED -> IN_PROCESS -> COMPLETED -> FULFILLED -> RECEIVED -> IN_USE -> DEPLETED -> WITHDRAWN

Methods: request, accept, startProcessing, completeProcessing, fulfill, receive, use, deplete, withdraw

KanbanCardPrintLifecycle — print state management:

NOT_PRINTED -> PRINTED (print)
PRINTED -> PRINTED (reprint)
PRINTED -> NOT_PRINTED (unmark)
PRINTED -> LOST (reportLost)
PRINTED -> DEPRECATED (deprecate)
PRINTED -> RETIRED (retire)
DEPRECATED -> LOST (reportLost)
DEPRECATED -> RETIRED (retire)
LOST -> PRINTED (reprint)
LOST -> RETIRED (retire)

Methods: printCards, cardPrinted, reprint, reportLost, retire, unmarkPrinted

The unmarkPrinted method transitions a card from PRINTED to NOT_PRINTED. It is a no-op for cards not in PRINTED status (idempotent for NOT_PRINTED). Exposed via POST /kanban-card/{eId}/event/unmark.

  • Serial number uniqueness within tenant scope
  • Valid lifecycle state transitions
  • Item reference validation
  • Location tracking on lifecycle transitions
  • Print status management

Kanban cards support a free-text notes field (up to 8192 characters, nullable). Notes are initialized from the item’s defaults when a card is created and can be updated independently via a dedicated endpoint. See Kanban Card Notes for the feature specification.

KanbanCardUniverse extends AbstractScopedUniverse<KanbanCard, KanbanCardMetadata, KANBAN_CARD_TABLE, KanbanCardRecord>().

Event sourcing tables:

  • kanban_card_event — lifecycle state changes
  • kanban_card_print_event — print lifecycle changes

Both tables record event_type, from_status, to_status, location, timestamps, and author.

Physical cards include a QR code linking to:

https://{base-url}/kanban/cards/{kanban-card-id}?view=card&src=qr
EnvironmentBase URL
Productionlive.app.arda.cards
Stagingstage.app.arda.cards
Developmentdev.app.arda.cards
PropertyValue
EncodingURL string encoded as QR code
Error correctionLevel M (15% recovery) — suitable for shop floor conditions where cards may be scratched or dirty
Minimum print size20 mm x 20 mm at 300 DPI for reliable scanning with mobile phone cameras
Label placementBottom-right quadrant of the card, with at least 4 mm quiet zone on all sides
Human-readable fallbackCard serial number printed below the QR code in OCR-B font for manual lookup when scanning fails

The card eId is available via the query endpoint:

POST /v1/kanban/kanban-card/query

Authentication: Bearer token. Pass the tenant identifier in the X-Tenant-Id request header.

Pagination: Default page size is 20; maximum is 500. Use the pageSize query parameter to increase the limit within that bound.

Extracting the ID: The entity identifier is at results[*].payload.eId in the response body.

API documentation:

  • OpenAPI: https://prod.alpha001.io.arda.cards/v1/kanban/docs/openApi.json
  • Swagger UI: https://prod.alpha001.io.arda.cards/v1/kanban/docs/openapi/index.html
  • Redoc: https://prod.alpha001.io.arda.cards/v1/kanban/docs/redoc/index.html