Design frontends like a senior engineer
Start with the fundamentals: how the web works, APIs, real-time updates, rendering, caching, performance, security, and more, each explained simply with hand-drawn diagrams. Then practice on real design problems, from one component to a whole app, answered step by step with a framework you can use in any interview.
111 lessons in 17 modules · 144 design problems
One framework for every question
Every problem here is answered in the same order, called RADIO. Learn it once and you'll never stare at a blank whiteboard again.
- RequirementsAsk questions. Agree on what it must do, how well, and what's out of scope.
- ArchitectureDraw the main parts, on the client and the server, and how data flows.
- Data modelDecide what the client keeps, its shape, and where each piece lives.
- InterfaceDefine the APIs and component props the parts use to talk.
- OptimizationsGo deep on speed, reliability, accessibility, and security.
The fundamentals
A course in 17 modules, from how the interview runs to structuring large frontends. Each lesson builds the idea from zero with diagrams, labs, and exercises, then ends with interview questions. Read in order, or search for the topic you need.
111 lessons in 5 stages and 17 modules.
Stage 1 Foundations
Start here
How the interview runs and the one framework used for every answer, then what happens between a URL and pixels and how a frontend talks to servers.
3 modules · 17 lessons
- 4 lessons · 1 h 31 min
Module 1: The interview
How a frontend system design interview runs, and a framework for answering any question in it.
- 6 lessons · 2 h 36 min
Module 2: How the web works
What happens between typing a URL and seeing pixels: DNS, TCP, TLS, HTTP, and the browser's rendering pipeline.
- 7 lessons · 2 h 50 min
Module 3: APIs and data fetching
How the frontend talks to servers: REST, GraphQL, gRPC, pagination, and designing APIs around the UI.
Stage 2 Core
Data in motion
Fetching data reliably, keeping a page live, and letting many people edit the same thing at once.
3 modules · 20 lessons
- 7 lessons · 2 h 48 min
Module 4: Data fetching patterns
Getting data to the screen reliably: request races, cancellation, debouncing, optimistic updates, retries, and prefetching.
- 8 lessons · 3 h 10 min
Module 5: Real-time communication
Keeping a page up to date: polling, long polling, server-sent events, WebSockets, and webhooks.
- 5 lessons · 1 h 58 min
Module 6: Collaboration and sync
Many people editing the same thing at once: operational transformation, CRDTs, presence, and resolving conflicts.
Stage 3 Core
Rendering and speed
Where HTML gets made, how to make pages fast and keep them fast, and where to keep data close.
3 modules · 25 lessons
- 8 lessons · 3 h 8 min
Module 7: Rendering patterns
Where and when HTML is made: client-side, server-side, static, streaming, islands, and server components.
- 10 lessons · 4 h 3 min
Module 8: Performance
Making pages load fast and stay smooth: Core Web Vitals, loading strategies, bundles, images, and runtime work.
- 8.1Core Web Vitals24 min
- 8.2Loading strategies24 min
- 8.3Code splitting and bundling24 min
- 8.4Images and media24 min
- 8.5Web fonts23 min
- 8.6List virtualization24 min
- 8.7Runtime performance23 min
- 8.8Memory in long-lived apps25 min
- 8.9Performance budgets and monitoring28 min
- 8.10Compression and minification24 min
- 7 lessons · 2 h 54 min
Module 9: Caching and storage
Every place data can be kept closer to the user, from HTTP caches and CDNs to IndexedDB, and how to keep it fresh.
Stage 4 Core
Building it right
State that stays in step, attacks a frontend must stop, interfaces everyone can use, and every language.
4 modules · 27 lessons
- 7 lessons · 2 h 41 min
Module 10: State management
Where each piece of state should live, how to normalize it, and how to keep the UI and the server in step.
- 9 lessons · 3 h 39 min
Module 11: Security
The attacks a frontend must stop (XSS, CSRF, clickjacking) and the defenses: CSP, CORS, secure cookies, and safe dependencies.
- 11.1Cross-site scripting (XSS)24 min
- 11.2Content Security Policy24 min
- 11.3Cross-site request forgery (CSRF)22 min
- 11.4CORS24 min
- 11.5Authentication and token storage24 min
- 11.6Clickjacking and iframes28 min
- 11.7Third-party scripts and supply chain24 min
- 11.8Security headers24 min
- 11.9Validating and sanitizing input25 min
- 7 lessons · 2 h 48 min
Module 12: Accessibility
Building interfaces everyone can use: semantics, keyboard and focus, screen readers, and color.
- 4 lessons · 1 h 34 min
Module 13: Internationalization
Serving every language and region: translations, plurals, dates, numbers, and right-to-left layouts.
Stage 5 Advanced
Running it at scale
Working offline, seeing what real users see, testing with confidence, and structuring large frontends.
4 modules · 22 lessons
- 4 lessons · 1 h 33 min
Module 14: Offline and PWAs
Working with a bad or no connection: service workers, installable apps, and syncing changes later.
- 6 lessons · 2 h 27 min
Module 15: Observability and experiments
Knowing what happens in real users' browsers: logging, error tracking, real-user monitoring, feature flags, and A/B tests.
- 4 lessons · 1 h 32 min
Module 16: Testing
A testing strategy that catches bugs early: unit, integration, end-to-end, visual, and performance tests.
- 8 lessons · 3 h 9 min
Module 17: Frontend architecture
Structuring large frontends: component APIs, design systems, config-driven UI, monorepos, and micro-frontends.
Design problems
Components, features, and whole apps, each an in-depth guide: the design built up step by step, every big decision weighed against the alternatives, with diagrams, interactive labs, and exercises to check your understanding.