Owner Nikunj

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 ID
  • title — display title (required)
  • hidden_title — optional hidden title / keywords used for search ranking
  • short_uid — auto-generated unique ID like DOC..., unique per course; used for sharing & deep-linking
  • internal_display_uid — human-friendly ID like DOC-001, used by admins; defaults to short_uid
  • course_id — the course this docket belongs to (UPSC, etc.)
  • root_taxonomy_id — L1 taxonomy (subject) this docket sits under
  • taxonomy_ids — full L1 → L2 → L3 taxonomy path
  • l2_taxonomy_id / l3_taxonomy_id — denormalised chapter / topic IDs from taxonomy_ids
  • body — ordered list of content blocks; each block has id, title, content, type, MCQ links, docket links, AI run results
  • bode — optional encrypted ciphertext of body (CryptoV2.1) for at-rest encryption
  • block_ids — denormalised list of all block IDs; must be unique
  • tag_ids — tags attached to the docket; max 5, no duplicates
  • sort_order — manual position within its taxonomy; default 0
  • lifecycle_status — visibility flag: ACTIVE / INACTIVE; default INACTIVE
  • lifecycle_sub_status — workflow stage: DRAFT / READY_FOR_REVIEW / REVIEWED / PUBLISHED / ARCHIVED; default DRAFT
  • linked_mcq_ids — denormalised aggregate of MCQ short UIDs across all blocks in this docket
  • linked_docket_ids — short UIDs of other dockets linked from this one
  • mcq_count — counts by question type — pyq, dq, eq, derived from block-level MCQ links
  • audio_generated — TTS audio organised by vendor; each entry: s3_key, content_type, total_duration, timeline, audio_config
  • ai_run_results — AI outputs keyed by prompt (e.g. summarise, fact-check); response + model metadata
  • trending_count — bookmark count in the last 24 hours; default 0
  • last_updated_flag_timestamp — when the docket was last flagged as updated (for change tracking)
  • is_deleted — soft-delete flag
  • created_at / updated_at
  • created_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 flagACTIVE / INACTIVE toggles visibility independently of workflow stage
  • Soft delete — deleting marks is_deleted=true; the record stays in the DB for recovery