Part V β The Craft
10 Low Level Design
GoalDesign and build reusable components under interview time pressure, narrating trade-offs as you go.
- 10.1 Component Design Design the props API before the implementation β the API is the part you can't change later.
- 10.2 Config Driven UI The server sends JSON describing the screen, and the client renders whatever it's told.
- 10.3 Shimmer UI Show the shape of the content while it loads β perceived speed improves even though nothing got faster.
- 10.4 Routing & Protected Routes A route table plus a guard that knows three answers: yes, no, and not yet.
- 10.5 State Management + Libraries Pick the library by re-render behaviour and team size, once you've classified the state correctly.
- 10.6 Multi Language Support Keys not sentences, one locale bundle at a time, and a layout that survives text growing 35%.
- 10.7 Infinite Scroll A sentinel element triggers the next page, and virtualization stops the DOM from growing forever.
- 10.8 Accordion A list of disclosure toggles β trivial to render, and a complete accessibility contract to get right.
- 10.9 Nested Comments A recursive tree render over a flat, normalized store β with a depth cap so it stays usable.
- 10.1 Image Slider One transform on a track, plus autoplay, swipe, preload, and the accessibility everyone forgets.
- 10.11 Pagination Part-1 Offset is simple and drifts; cursor is stable and can't jump to page 7 β pick by what the data does.
- 10.12 Pagination Part-2 Build it: URL-driven state, an ellipsis page range, and a keyboard-accessible nav element.
- 10.13 Real-Time Updates Merge live events into rendered lists without losing the user's place or their scroll position.
- 10.14 YouTube Live Stream Chat UI Hundreds of messages a second into a fixed-size window β buffer, cap, virtualize, and pin to bottom carefully.
- 10.15 Autocomplete & Search Bar Debounce, cancel, cache, and keyboard-navigate β the most-asked LLD question, and the most detail-rich.
Capstone
Build any three of these in 45 minutes each, out loud: state the API first, handle loading/empty/error, then optimise.