Trilha progressiva · 123 aulas
System Design de Front-end: de Junior a Principal Front-end Engineer.
Decisões de arquitetura do lado do cliente — arquitetura de app, estado, performance, build, rede, dados, renderização, IA em streaming, escalabilidade, resiliência, PWA, segurança, design systems, Web Components, micro-frontends, observabilidade, experimentação, acessibilidade, i18n e testes — com evidência, não modismo.
Comece aqui
Aulas
- Abrir aula
Aula 01 · 75–100 minutos
O que é system design de front-end e por que é diferente do back-end
Aula introdutória de System Design de Front-end: o que é, como difere do back-end, o método RADIO e a primeira decisão defensável.
- Abrir aula
Aula 02 · 70–90 minutos
Como estruturar uma aplicação front-end grande
Por que aplicações front-end grandes desorganizam com o tempo, os princípios que revertem isso — coesão, acoplamento, colocação e uma estrutura que grita o domínio — e o mapa do que vem a seguir neste macrotema.
Mapa curricular
23 macrotemas · 123 aulas
Aulas publicadas são clicáveis. Aulas planejadas mostram a sequência sem simular conteúdo inexistente. Macrotemas 01–20 cobrem front-end system design de ponta a ponta (incluindo o checklist de entrevista original mais 5 macrotemas de expansão: build tooling, streaming de IA, PWA, Web Components e experimentação); 21–22 cobrem a progressão até Principal e a prática de entrevista.
01 · Arquitetura de aplicações front-end
Estruturar sem acoplar
Separação UI/domínio/estado/infra, feature-based vs. layer-based, monorepo, boundaries.
- Separação entre UI, domínio, estado e infraestruturaEm breve
- Feature-based vs. layer-based architectureEm breve
- Monorepo vs. multirepo: trade-offs organizacionaisEm breve
- Acoplamento, boundaries e dependências entre módulosEm breve
- Estudo de caso: front-end de um SaaS desenvolvido por 10 timesEm breve
02 · Gerenciamento de estado
Não confundir estado de servidor com estado local
Local vs. global, server vs. client state, cache, normalização, otimismo, URL, persistência.
- Local state vs. global stateEm breve
- Server state vs. client state: por que são categorias diferentesEm breve
- Cache, normalização de dados e invalidaçãoEm breve
- Optimistic updates e sincronização entre componentesEm breve
- URL como fonte de estado e persistência de estadoEm breve
- Zustand, Redux, Context e afins: quando usar cada abordagemEm breve
- Estudo de caso: e-commerce — onde armazenar carrinho, usuário, filtros e produtosEm breve
03 · Performance
Investigar antes de listar técnicas
Rendering pipeline, reflow/repaint, code splitting, bundle, Core Web Vitals.
- Rendering pipeline: JavaScript → Style → Layout → Paint → CompositeEm breve
- Reflow, repaint, main thread e long tasksEm breve
- Code splitting, lazy loading e tree shakingEm breve
- Bundle size, dynamic imports, prefetch vs. preloadEm breve
- Otimização de imagens e virtualização de listasEm breve
- Memoization, Web Workers, CDN e cache HTTPEm breve
- Core Web Vitals na práticaEm breve
- Estudo de caso: investigando uma aplicação lentaEm breve
04 · Build tooling como decisão de arquitetura
Bundler e dev server são trade-off, não gosto
Resolução de módulos, Vite/webpack/esbuild, HMR em escala.
- Bundlers e dev servers: o que cada peça resolveEm breve
- Vite, webpack e esbuild/Rollup: trade-offs arquiteturaisEm breve
- Hot Module Replacement e experiência de desenvolvimento em escalaEm breve
- Estudo de caso: escolher a stack de build para um monorepo com múltiplos timesEm breve
05 · Networking e navegador
O caminho entre o clique e a resposta
DNS/TCP/TLS, HTTP/1.1–3, storage, CORS, REST vs. GraphQL, tempo real.
- DNS, TCP e TLS: o caminho até o servidorEm breve
- HTTP/1.1, HTTP/2 e HTTP/3Em breve
- Cookies, LocalStorage, SessionStorage e IndexedDBEm breve
- CORS e Same-Origin PolicyEm breve
- CDN, compressão e request waterfallEm breve
- REST vs. GraphQLEm breve
- WebSockets, SSE e polling — estudo de caso: chat em tempo realEm breve
06 · Data fetching e cache
Buscar dados sem perder a ordem
Client vs. server fetching, SWR, paginação, retry, race conditions.
- Fetching no cliente vs. no servidorEm breve
- Stale-while-revalidate, paginação e cursor paginationEm breve
- Retry, backoff, deduplicação e race conditionsEm breve
- AbortController e cancelamento de requisições obsoletasEm breve
- Sincronização offline/onlineEm breve
- Estudo de caso: feed infinito com milhões de usuáriosEm breve
07 · Estratégias de renderização
Escolher onde a UI nasce
CSR, SSR, SSG, ISR, streaming, hydration, Server Components, edge.
- CSR, SSR, SSG e ISR: trade-offsEm breve
- Streaming SSR e hydrationEm breve
- Partial hydration e Server ComponentsEm breve
- Edge renderingEm breve
- Escolhendo a estratégia certa a partir de requisitosEm breve
- Estudo de caso: página de produto de e-commerceEm breve
08 · UI de streaming e interfaces de IA (chat/LLM)
Renderizar antes da resposta terminar
ReadableStream, tokens parciais, UI otimista e falha parcial em respostas de IA.
- Streams no navegador: ReadableStream e renderização incrementalEm breve
- Streaming de respostas de IA: tokens parciais, UI otimista e cancelamentoEm breve
- Erros e falhas parciais em uma resposta de IA em streamingEm breve
- Estudo de caso: interface de chat com streaming de LLMEm breve
09 · Escalabilidade
Pensar além de componentes React
CDN, edge, BFF, rate limiting, multi-region, graceful degradation.
- CDN, edge e load balancingEm breve
- API gateways e BFF (Backend for Frontend)Em breve
- Rate limiting e feature flagsEm breve
- Multi-region, graceful degradation e resiliênciaEm breve
- Estudo de caso: home page de uma plataforma com 50 milhões de usuáriosEm breve
10 · Resiliência e UX em condições ruins
Não assumir que rede e backend sempre funcionam
Offline, retry, skeleton screens, error boundaries, idempotência.
- Rede offline, 3G/4G lenta e timeoutEm breve
- Retry com exponential backoff e partial failureEm breve
- Skeleton screens e error boundariesEm breve
- Offline-first e optimistic UIEm breve
- Idempotência do ponto de vista do front-endEm breve
- Estudo de caso: checkout resiliente a falha parcialEm breve
11 · PWA e Service Worker
Instalável, offline e confiável
Ciclo de vida do Service Worker, estratégias de cache, background sync, push.
- Ciclo de vida do Service Worker e o que ele interceptaEm breve
- Estratégias de cache: cache-first, network-first, stale-while-revalidate no Service WorkerEm breve
- Background sync e sincronização adiadaEm breve
- Web Push e notificaçõesEm breve
- Estudo de caso: PWA instalável e utilizável offlineEm breve
12 · Segurança
Ameaças e trade-offs, não só nomes
XSS, CSRF, CSP, clickjacking, cookies, OAuth 2.0, OIDC, JWT.
- XSS, CSRF, CORS e CSPEm breve
- Clickjacking e defesas de frameEm breve
- Cookies HttpOnly, Secure, SameSite e token storageEm breve
- OAuth 2.0, OIDC e JWT: trade-offsEm breve
- Estudo de caso: onde armazenar o access token e por quêEm breve
13 · Design systems e componentização
Consistência em escala
Atomic design, tokens, component API, theming, Storybook.
- Atomic design vs. componentes orientados a featureEm breve
- Design tokens e acessibilidadeEm breve
- Component API design: composição vs. herançaEm breve
- Theming, versionamento e backward compatibilityEm breve
- Storybook e distribuição de componentesEm breve
- Estudo de caso: design system usado por 20 aplicaçõesEm breve
14 · Web Components e Shadow DOM
Componentes que sobrevivem à troca de framework
Custom Elements, Shadow DOM, interoperabilidade com frameworks.
- Custom Elements: definindo comportamento fora de um frameworkEm breve
- Shadow DOM: encapsulamento de estilo e DOMEm breve
- Interoperabilidade entre Web Components e frameworksEm breve
- Estudo de caso: distribuir um componente de design system como Web ComponentEm breve
15 · Micro-frontends
Saber argumentar, não só implementar
Quando usar, Module Federation, deploys independentes, comunicação.
- Por que (e quando não) usar micro-frontendsEm breve
- Module federation: integração em build-time vs. runtimeEm breve
- Deploys independentes e dependências compartilhadasEm breve
- Design system compartilhado e comunicação entre micro-frontendsEm breve
- Routing, performance e versionamento entre micro-frontendsEm breve
- Estudo de caso: argumentando a favor ou contra micro-frontendsEm breve
16 · Observabilidade
Saber que algo piorou antes do usuário reclamar
Logs, tracing, error tracking, RUM, alerting, rollback.
- Logs, métricas e tracing no front-endEm breve
- Error tracking e Real User Monitoring (RUM)Em breve
- Web Vitals monitorados em produção e correlation IDsEm breve
- Alerting, feature flags e rollbackEm breve
- Estudo de caso: como saber que uma mudança piorou a experiênciaEm breve
17 · Experimentação e A/B testing
Decidir com dados, sem se enganar
Atribuição de variante, Sample Ratio Mismatch, flicker, performance.
- Atribuição de variante, consistência e por que isso é um problema de front-endEm breve
- Sample Ratio Mismatch e outras armadilhas de confiança do experimentoEm breve
- Prevenção de flicker e impacto de performance da experimentaçãoEm breve
- Estudo de caso: rollout de um experimento sem degradar Core Web VitalsEm breve
18 · Acessibilidade
Requisito de sistema, não checklist visual
WCAG, semântica, teclado, ARIA, foco, formulários.
- WCAG e HTML semânticoEm breve
- Navegação por teclado, leitores de tela e ARIAEm breve
- Focus management, contraste e reduced motionEm breve
- Formulários acessíveisEm breve
- Estudo de caso: projetando um modal acessívelEm breve
19 · Internacionalização e localização
Sistemas globais, não só tradução
i18n, pluralização, RTL, timezones, formatação, lazy loading de traduções.
- i18n, traduções e pluralizaçãoEm breve
- RTL, timezones e formatação de datas, moedas e númerosEm breve
- Lazy loading de traduçõesEm breve
- Estudo de caso: preparando um componente para múltiplos idiomasEm breve
20 · Testing e qualidade
Testar na camada certa
Test pyramid, contract testing, visual regression, CI/CD, canary, rollback.
- Test pyramid: unit, integration e E2E no front-endEm breve
- Contract testing e visual regressionEm breve
- CI/CD, canary releases e feature flagsEm breve
- Rollback como parte do designEm breve
- Estudo de caso: o que testar no front-end e em qual camadaEm breve
21 · Senior, Tech Lead e Principal Front-end
Multiplicar boas decisões além de um componente
Escopo, arquitetura sociotécnica, guardrails, estratégia, influência.
- Escopo de decisão: de componente a produto a plataformaEm breve
- Arquitetura sociotécnica: fronteiras de time no front-endEm breve
- Guardrails, princípios e governança leve de front-endEm breve
- Estratégia técnica e redução de risco em migrações de front-endEm breve
- Custo, performance de time e decisões de plataformaEm breve
- Influência sem autoridade formal como Principal Front-endEm breve
22 · Entrevistas de front-end system design
Cinco casos reais, resolvidos com o método RADIO
Feed, editor colaborativo, checkout, dashboard e chat, além de perguntas técnicas.
- Como conduzir uma entrevista de front-end system design (RADIO)Em breve
- Caso, aprofundado: feed de notíciasEm breve
- Caso, aprofundado: editor colaborativoEm breve
- Caso, aprofundado: checkout de e-commerceEm breve
- Caso, aprofundado: dashboard em tempo realEm breve
- Caso, aprofundado: chat em tempo realEm breve
- Perguntas técnicas de entrevista: respostas e armadilhasEm breve
- Simulação e crítica de uma solução de front-end system designEm breve
Para consultar