../writing

Reference reference

TaskBoard Quick Reference

demonstrates: A one-page lookup for TaskBoard: interface actions, printing rules, the data model, the REST API endpoint index, and backend configuration knobs.

2026-07-18 · referencecheat-sheettaskboardapirest

Fast lookup for TaskBoard. For step-by-step instructions, see the TaskBoard User Manual; for exhaustive request and response shapes, see the TaskBoard API Reference.

Interface actions

ActionWhereResultPrints?
Sign inCognito login (cloud builds)Authenticates the user; boards are per-accountNo
Switch boardSidebar, click a subjectLoads that boardNo
New boardSidebar, + New boardCreates a board seeded with Pending / In Progress / CompleteNo
Add taskSwimlane, + Add taskCreates a task in that swimlaneNEW TASK
Move taskDrag a card to another swimlaneChanges the task’s statusMOVED / COMPLETED
Open taskClick a cardOpens the task drawerNo
Edit descriptionTask drawer, description box (saves on blur)Updates the taskNo
Set progressTask drawer, slider (saves on release)Updates progress 0 to 100No
Add commentTask drawer, comment box (Enter or Add)Appends a commentNo
Delete taskTask drawer, Delete task (confirm)Removes the taskNo
Change backendSidebar, API URL (saves on blur; local/self-host builds only, hidden in cloud)Reconnects the clientNo

Printing rules

EventReceiptCard fields
Task createdNEW TASKTASK, BOARD, SWIMLANE
Task moved to a different swimlaneMOVEDTASK, BOARD, MOVE (from -> to), PROGRESS bar
Task moved into a Complete / Completed / Done swimlaneCOMPLETEDTASK, BOARD, MOVE, PROGRESS (snaps to 100%)
Any other actionnonenone
  • A move within the same swimlane does not print (the status did not change).
  • Printing is asynchronous and best-effort: it never blocks the request or changes the response.
  • console mode (default) renders each receipt to the server log as a bordered ASCII card; printer mode prints it on the RP850. Printer hardware is optional; console mode requires none.

Receipt anatomy

        NEW TASK
       Mon Jul 14 2:05pm
========================
TASK
  Draft cover letter
BOARD
  Job Search
SWIMLANE
  Pending
========================

Receipt width defaults to 24 characters (set by PRINT_WIDTH). The PROGRESS line on MOVED / COMPLETED cards renders as [######..........] 40% (16 slots at the default width).

Data model

Board (subject) 1--* Swimlane (status column)
Board           1--* Task
Task            1--* Comment
EntityKey fieldsNotes
Boardid, name, description, position, created_atHas a per-user owner (Cognito sub), not returned in responses. New boards seed swimlanes Pending, In Progress, Complete. Deleting a board cascades to its swimlanes, tasks, and comments.
Swimlaneid, board_id, name, positionOrdered by position. Names Complete / Completed / Done are treated as “finished”.
Taskid, board_id, swimlane_id, title, description, progress, position, created_at, updated_at, comments[]progress is an integer 0 to 100. A task lives in exactly one swimlane.
Commentid, task_id, author, body, created_atauthor defaults to "me". Listed oldest first.

REST API

Base URL: https://printchit.app in the cloud (behind API Gateway + CloudFront); defaults to http://127.0.0.1:8000 locally. Interactive docs at /docs, raw schema at /openapi.json.

MethodPathPurposePrints?
GET/healthLiveness and current print mode ({ "status": "ok", "print_mode": ... })No
GET/boardsList board summariesNo
POST/boardsCreate a board (seeds default swimlanes), 201No
GET/boards/{id}Full board with swimlanes and tasks (comments nested)No
PATCH/boards/{id}Update name / description / positionNo
DELETE/boards/{id}Delete board, 204 (cascades)No
GET/boards/{board_id}/swimlanesList swimlanes, ordered by positionNo
POST/boards/{board_id}/swimlanesCreate a swimlane, 201No
PATCH/swimlanes/{id}Update name / positionNo
DELETE/swimlanes/{id}Delete swimlane, 204No
GET/tasks/{id}Get one task with nested commentsNo
POST/tasksCreate a task, 201 (swimlane_id defaults to the board’s first)NEW TASK
PATCH/tasks/{id}Update title / description / progressNo
POST/tasks/{id}/moveMove to another swimlane (prints only if the swimlane changes)MOVED / COMPLETED
DELETE/tasks/{id}Delete a task, 204No
GET/tasks/{task_id}/commentsList comments, oldest firstNo
POST/tasks/{task_id}/commentsAdd a comment, 201No
GET/print-jobsList queued receipts for the home agent (status, limit); queue modeNo
POST/print-jobs/{id}/ackMark a queued receipt printedNo

Conventions

  • Media type: application/json for requests and responses.
  • Authentication: Cognito JWT bearer token on every endpoint except /health; validated by API Gateway in the cloud, or skipped locally with AUTH_DISABLED=1. Boards are per-user (multi-tenant): a resource owned by another user returns 404, never 403.
  • IDs: integers, unique per resource.
  • Timestamps: ISO 8601 datetimes.
  • Status codes: 200 OK, 201 Created, 204 No Content, 400 bad request, 401 unauthorized, 404 not found, 422 validation error.

Backend configuration

Read by app/config.py from the environment (or api/.env). The core knobs are in .env.example; the delivery and auth knobs below are set in the deployment environment.

VariableDefaultPurpose
PRINT_MODEconsoleconsole logs receipts to the server log; printer prints on the RP850
PRINT_DELIVERYdirectdirect prints inline; queue enqueues jobs for the home print-agent (cloud)
PRINT_OWNER_SUB(unset)In queue mode, only this owner’s boards enqueue prints; unset fails closed in the cloud
PRINTER_NAMEPOS-80Windows printer name used in printer mode
PRINT_WIDTH24Receipt character width
DATABASE_URLsqlite:///./tasks.dbStorage location (Aurora Postgres in the cloud)
CORS_ORIGINS*Comma-separated allowed origins (tightened in the cloud)
AUTH_DISABLED11 disables auth for local dev; 0 requires Cognito JWTs
COGNITO_ISSUER(unset)Cognito issuer URL used to validate tokens (cloud)
COGNITO_AUDIENCE(unset)Accepted Cognito app client id(s), comma-separated