Docket
1. What is a Docket?
A Docket is the core study content unit. It’s a structured lesson on a single topic — rich content, embedded practice questions, and metadata — sitting under a course and a taxonomy.
Think of it as a Wikipedia article tailored for exam prep — if the platform is a textbook, dockets are the chapters.
2. Structure
A docket is a block-based document, scoped to a single taxonomy node:
DOCKET "Area of Circle" (DOC-001)
└─ Path: Maths → Geometry → 2D Shapes
└─ Body:
├─ Block 1 (PlateJS) "Introduction..." + 2 MCQs
├─ Block 2 (PlateJS) [rich content + image]
├─ Block 3 (PlateJS) "Area = πr²" + 1 MCQ
└─ Block 4 (PlateJS) [AI summary]
- Metadata — title, short UID, taxonomy path, tags
- Body — ordered list of blocks; each block is an independent PlateJS document (rich text, images, and other inline content live inside the PlateJS tree) with its own ID, content, and MCQ links; reorderable
- Classification — every docket sits at exactly one L3 taxonomy node (Subject → Chapter → Topic)
- Cross-links — dockets can link to other dockets
3. Parameters of a Docket
_id— unique IDtitle— display title (required)hidden_title— optional hidden title / keywords used for search rankingshort_uid— auto-generated unique ID likeDOC..., unique per course; used for sharing & deep-linkinginternal_display_uid— human-friendly ID likeDOC-001, used by admins; defaults toshort_uidcourse_id— the course this docket belongs to (UPSC, etc.)root_taxonomy_id— L1 taxonomy (subject) this docket sits undertaxonomy_ids— full L1 → L2 → L3 taxonomy pathl2_taxonomy_id/l3_taxonomy_id— denormalised chapter / topic IDs fromtaxonomy_idsbody— ordered list of content blocks; each block hasid,title,content,type, MCQ links, docket links, AI run resultsbode— optional encrypted ciphertext ofbody(CryptoV2.1) for at-rest encryptionblock_ids— denormalised list of all block IDs; must be uniquetag_ids— tags attached to the docket; max 5, no duplicatessort_order— manual position within its taxonomy; default0lifecycle_status— visibility flag:ACTIVE/INACTIVE; defaultINACTIVElifecycle_sub_status— workflow stage:DRAFT/READY_FOR_REVIEW/REVIEWED/PUBLISHED/ARCHIVED; defaultDRAFTlinked_mcq_ids— denormalised aggregate of MCQ short UIDs across all blocks in this docketlinked_docket_ids— short UIDs of other dockets linked from this onemcq_count— counts by question type —pyq,dq,eq, derived from block-level MCQ linksaudio_generated— TTS audio organised by vendor; each entry:s3_key,content_type,total_duration,timeline,audio_configai_run_results— AI outputs keyed by prompt (e.g.summarise,fact-check); response + model metadatatrending_count— bookmark count in the last 24 hours; default0last_updated_flag_timestamp— when the docket was last flagged as updated (for change tracking)is_deleted— soft-delete flagcreated_at/updated_atcreated_by/updated_by
4. Lifecycle
Each docket moves through an editor-controlled workflow:
DRAFT → READY_FOR_REVIEW → REVIEWED → PUBLISHED → ARCHIVED
- DRAFT — being written, not visible
- READY_FOR_REVIEW — author has handed it off to a reviewer
- REVIEWED — reviewer has signed off, awaiting publish
- PUBLISHED — live and visible to students
- ARCHIVED — retired
- Visibility flag —
ACTIVE/INACTIVEtoggles visibility independently of workflow stage - Soft delete — deleting marks
is_deleted=true; the record stays in the DB for recovery