Requirements
Two closely related scenarios are often presented:
- Component template/instance model. A template (like a button) spawns instances that can override certain properties (e.g., text, color). Propose an efficient, JSON-like representation so that when the template is modified, all instances automatically reflect those changes while retaining any local overrides.
- Online slide/presentation template system. Users create document instances from a shared template. When the template is updated, the system should identify all affected instances, notify their owners, and allow each owner to decide whether to adopt the new version. Begin with a minimal, straightforward design.
Notes
- The central design challenges are: how an instance stores overrides separately from inherited template values (so template edits propagate but local customizations persist), how to handle template versioning, and the notification-plus-opt-in flow for document updates.
- The expected scale is modest — candidates who over‑engineer the system as a high‑throughput, globally distributed service are missing the point. Start with the simplest correct data model, then layer on propagation and versioning step by step.
- This problem often appears in Figma’s system‑design rotation alongside prompts about trending content and real‑time comments.
Preparation
- Design the instance‑as‑overrides data model (inherited template fields plus per‑instance overrides) and walk through the behavior when a template field changes.
- Outline the update‑propagation flow: detect affected instances, notify their owners, and implement an opt‑in adoption mechanism backed by template versioning so that stale instances remain valid.