ADR-010: Intent-Based Content Draft Creation

Prev Next

Context

Previously, content drafts were created automatically when a user initiated a “Create content” flow (e.g. clicking + Add New).

This led to:

  • Accidental and abandoned drafts
  • Polluted CMS content lists
  • Inconsistent creation semantics between media and non-media content
  • Inability to run meaningful validations before persistence

Media content types (video, image, audio) implicitly enforced intent via uploads, while other content types created placeholder drafts without user confirmation.

Decision

  • Content drafts MUST NOT be created implicitly on navigation or CTA interaction.
  • A content record will be created only after explicit user intent, expressed by submitting a minimal required payload (e.g. title).

Rules

  1. Clicking + Add New does not create any database records.
  2. All content types must pass through a Create Gate before draft creation.
  3. Draft creation requires:
    • A non-empty title
    • A valid content type
    • Any other invariant validations required by the CMS
  4. Only after successful validation is a draft content record persisted.
  5. Media uploads and editors attach to an already-created draft and never create content implicitly.

Resulting Flow

  1. User clicks + Add New CTA present in the page header - each CTA is aware of the content creation it should trigger.
  2. System presents a minimal create form (e.g. title)
  3. User submits → validations run
  4. Draft is created explicitly
  5. User gets can choose to close the modal or open the draft in edit view.

Consequences

Positive

  • Prevents accidental and polluted draft content
  • Enables validation before persistence
  • Unifies creation semantics across all content types
  • Aligns with explicit intent → side-effect architectural principles
  • Simplifies auditing, filtering, and content lifecycle reasoning

Trade-offs

  • Adds one additional step to content creation
  • Requires UI changes to introduce a create gate

Notes

  • This decision intentionally separates navigation intent from data persistence.
  • Creation of CMS content is treated as a deliberate, validated action.