Spec — Design system
2026-refresh › design-system · feature · created 2026-08-05 · spec · plan.html
One visual language for everything the refresh renders — context cards, re-skinned slides, editing overlays, the on-screen recording look — chosen by Asim from rendered candidates (never from descriptions), then delivered as reusable templates and tokens that every sibling task consumes instead of inventing its own look.
Problem
P1Four different looks already exist, and none was ever chosen — drift is happening before production has even started.
P2"We'll talk styling later" is blocking three sibling tasks — cards, slide re-skins and edited output all need the answer.
back-catalogue-ops can't batch ~35 cards, slides-reskin can't render a frame,
and lecture-editing can't design overlays until the look exists. The style conversation was deliberately
parked during the spikes; this task is where it happens.P3The merged course spans a decade of footage and must read as one product — the rendered surfaces are the stitching.
P4The old marks point at a world that no longer exists — @jawache and CodeCraft are retired; nothing replaces them yet.
Solution at a glance
J0Asim picks the course's look from rendered candidates, and from then on no sibling task ever makes a style decision. The pick becomes design tokens (palette, type, spacing, marks) and four consumable artefacts: the card template v2, a slide/diagram kit for re-skins and re-records, an editing overlay kit, and the pinned recording-profile look.
Job stories
J1 · When we decide the look
J1.1I choose from rendered candidates, side by side — real frames of real course moments, never descriptions or mood words P1Four looks already existnone was chosen
J1.2Nothing ships in a look I haven't signed off — sign-off is per surface, recorded, and spikes never count as approval P1Four looks already existtwo spikes drifted unsanctioned
J2 · When a sibling task needs the look
J2.1Cards come out of a template, not a design session — copy in, on-brand card out; ~35 without another style decision P2Styling blocks three taskscards are the biggest batch
ContextCard, restyled to the chosen tokens; the card-copy
file convention stays as-is.J2.2Slides and diagrams come out of a kit — the re-skins and event-loop re-records build from parameterised Remotion pieces P2Styling blocks three tasksslides-reskin can't render a frame P3A decade of footage, one productre-skins are the stitching
J2.3Editing reaches for a stocked overlay kit — emphasis boxes, arrows, lower-thirds, "UP NEXT" bumpers, in the same language P2Styling blocks three tasksoverlays are post-production's vocabulary
J2.4The recording profile wears the same language — theme, font and layout of the on-camera VS Code, pinned once P3A decade of footage, one productnew takes should look designed, not default
lecture-production's spec lands here: the isolated
recording profile inherits the system's editor theme/font so takes match the rendered surfaces.J2.5Anything later starts from the tokens — advjs.asim.dev consumes the same palette/type/marks rather than re-deciding them P4Old marks are retiredthe replacement must be reusable
J3 · When a student watches across eras
J3.1Every rendered surface reads as one product — and the on-screen mark points at Asim's current world, consistently P3A decade of footage, one productcards/re-skins/overlays are the stitching P4Old marks are retired@jawache and CodeCraft are gone
advjs-landing
exists — where it sits, how loud it is) is taken once, here, and applied by every kit. Untouched 2016/2019 footage keeps its
era; only rendered/re-rendered surfaces carry the new language.Constraints
- Everything must be legible in 1080p30 video sat next to upscaled 720p footage — video-first design, not web-first.
- Remotion is the rendering vehicle for cards/slides/overlays (decided); the kits are parameterised, not one-offs.
- The system restyles rendered surfaces only — it never forces a re-record, and untouched lectures stay untouched.
- Asim signs off every surface from rendered output; spikes and defaults never count as approval.
- On-screen links/marks must stay within Udemy's instructor policies.
- British English on every rendered word.
Deferred to plan
Which candidate directions get boarded, and how many
What the on-screen mark says
advjs-landing's domain being real (the mark most
plausibly points there) and the board review. Options as understood: advjs.asim.dev · asim.dev ·
no mark at all.Decisions
Remotion renders all designed graphics — cards, slides, overlays
@jawache and CodeCraft marks are retired everywhere we render
Existing looks enter as candidates, not incumbents
Emphasis lives in post-production overlays, not live mouse-pointing
Estimated files / edits
Size: M
- Candidate boards (rendered stills/clips) for the sign-off sessions.
- Design tokens — one small reference (palette · type · spacing · marks).
pipeline/remotion/— ContextCard v2, slide/diagram kit, overlay kit.- Recording-profile theme/font settings for the
recordingVS Code profile.