/Front-End-Checklist

đź—‚ O Front-End Checklist perfeito para websites modernos e desenvolvedores meticulosos

Creative Commons Zero v1.0 UniversalCC0-1.0

Front-End Checklist

Participe do chat em https://gitter.im/Front-End-Checklist/Lobby Front‑End_Checklist followed Contributors StackShare CC0

A Front-End Checklist é uma lista exaustiva de todos elementos que você precisa ter / testar antes de lançar seu site / página HTML em produção.

Ela é baseada em anos de experiência de desenvolvedores Front-End, com as adições provenientes de outras checklists open-source.

Ajude a compartilhar a Front-End Checklist votando e recomendando-a no Product Hunt

ĂŤndice

  1. Head
  2. HTML
  3. Webfonts
  4. CSS
  5. Imagens
  6. JavaScript
  7. Segurança
  8. Performance
  9. Acessibilidade
  10. SEO

Como usar?

Todos itens na Front-End Checklist são necesários na maioria dos projetos, mas alguns elementos podem ser omitidos ou não são tão essenciais (no caso da administração de um aplicativo web, você pode não precisar de um feed RSS por exemplo). Nós escolhemos três níveis de flexibilidade:

  • Baixa significa que o item Ă© recomendado mas pode ser omitido em algumas situações em particular.
  • MĂ©dia significa que o item Ă© altamente recomendado e pode eventualmente ser omitido em alguns casos realmente particulares. Alguns elementos, se omitidos, podem ter más repercussões em termos de performance ou SEO.
  • Alta significa que o item nĂŁo pode ser omitido por qualquer razĂŁo. VocĂŞ pode causar uma disfunção na sua página ou ter problemas com acessibilidade ou SEO. A prioridade dos testes precisa estar nestes elementos primeiro.

Alguns recursos possuem um emoticon para ajudar vocĂŞ a entender qual tipo de conteĂşdo / ajuda vocĂŞ pode encontrar na checklist:

  • đź“–: documentação ou artigo
  • đź› : ferramenta online / ferramenta de teste
  • đź“ą: mĂ­dia ou conteĂşdo em vĂ­deo

Head

Notas: VocĂŞ pode acessar uma lista com tudo que poderia ser encontrado na <head> de um document HTML.

Meta tag

  • Doctype: Alta O Doctype Ă© HTML5 e está no topo de todas as suas páginas HTML.
<!-- Doctype HTML5 -->
<!doctype html>

A prĂłximas 3 meta tags (Charset, X-UA Compatible e Viewport) precisam vir primeiro no head.

  • Charset: Alta O charset declarado (UTF-8) Ă© corretamente declarado.
<!-- Determine o encoding de caracteres para o document -->
<meta charset="utf-8">
  • X-UA-Compatible: MĂ©dia A meta tag X-UA-Compatible está presente.
<!-- Instrua o Internet Explorer a usar seu mais recente engine de renderização -->
<meta http-equiv="x-ua-compatible" content="ie=edge">
  • Viewport: Alta A viewport Ă© corretamente declarada.
<!-- Viewport para web design responsivo -->
<meta name="viewport" content="width=device-width, initial-scale=1">
  • Title: Alta Um tĂ­tulo Ă© usado em todas páginas (SEO: Google calcula a largura em pĂ­xel dos caracteres usados no tĂ­tulo, cortados entre 472 e 482 pĂ­xels. O limite mĂ©dio de caracteres seria em torno de 55-caracteres).
<!-- TĂ­tulo do Document -->
<title>Título de Página menor que 65 caracteres</title>
  • Descrição: Alta Uma meta decrição Ă© providenciada, Ă© Ăşnica e nĂŁo possui mais de 150 caracteres.
<!-- Meta Descrição -->
<meta name="description" content="Descrição da página com menos de 150 caracteres">
  • Favicons: MĂ©dia Cada favicon foi criado e Ă© exibido corretamente. Se vocĂŞ tem apenas um favicon.ico, ponha-o na raiz do seu site. Normalmente vocĂŞ nĂŁo precisa usar nenhum markup. Entretanto, ainda Ă© uma boa prática linkar ele usando o exemplo abaixo. Atualmente, o formato PNG Ă© recomendado ao invĂ©s do formato .ico (dimensões: 32x32px).
<!-- Favicon padrĂŁo -->
<link rel="icon" type="image/x-icon" href="https://example.com/favicon.ico">
<!-- Formato favicon recomendado -->
<link rel="icon" type="image/png" href="https://example.com/favicon.png">
  • Apple Touch Icon: Baixa O apple touch favicon apple-mobile-web-app-capable está presente. (Crie seu arquivo Apple Icon com pelo menos dimensĂŁo 200x200px para dar suporte a todas dimensões que vocĂŞ pode precisar)
<!-- Apple Touch Icon -->
<link rel="apple-touch-icon" href="/custom-icon.png">
  • Windows Tiles:Baixa Windows tiles estĂŁo presentes e linkadas.
<!-- Microsoft Tiles -->
<meta name="msapplication-config" content="browserconfig.xml" />

O markup xml mínimo necessário para o arquivo browserconfig.xml é como segue:

<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
   <msapplication>
     <tile>
        <square70x70logo src="small.png"/>
        <square150x150logo src="medium.png"/>
        <wide310x150logo src="wide.png"/>
        <square310x310logo src="large.png"/>
     </tile>
   </msapplication>
</browserconfig>
  • Canonical: MĂ©dia Use rel="canonical" para evitar conteĂşdo duplicado.
<!-- Ajuda a evitar problemas com conteĂşdo duplicado -->
<link rel="canonical" href="http://example.com/2017/09/a-new-article-to-red.html">

Tags HTML

  • Atributo de linguagem: Alta A tag de idioma do seu website Ă© especificada e relacionada ao idioma atual da página.
<!-- Indicamos o idioma definido para a página atual -->
<html lang="pt-br">
  • Atributo de direção: MĂ©dia A direção de leitura Ă© especificada na tag <html> (Pode ser usada em outra tag HTML).
<!-- Indicamos a direção de leitura (rtl é sigla para right to left, isto é, da direita para a esquerda) -->
<html dir="rtl">
  • Idioma alternativo: Baixa A tag de idioma do seu website Ă© especificada e relacionada ao idioma atual da página.
<!-- Indicamos o idioma definido para a página atual -->
<link rel="alternate" href="https://es.example.com/" hreflang="es">
  • Comentários condicionais: Baixa Comentários condicionais sĂŁo presentes para o IE se necessário.
  • RSS feed: Baixa Se seu projeto Ă© um blog ou possui artigos, foi providenciado o link do RSS.

  • CSS CrĂ­tico inline: MĂ©dia CSS que estiliza conteĂşdo que Ă© imediatamente visĂ­vel durante arregamento de páginas (conteĂşdo "above the fold") Ă© denominado "CSS CrĂ­tico. Ele Ă© embutido antes da chamada CSS principal e entre <style></style> numa linha Ăşnica (minificado).

  • Ordem CSS: Alta Todos os arquivos CSS sĂŁo carregados antes de quaisquer arquivos JavaScript files no <head>. (Exceto o caso onde, algumas vezes, arquivos JS sĂŁo carregados assĂ­ncronamente no topo da página).

Social meta

Facebook OG e Twitter Cards são, para qualquer website, altamente recomendados. As outras tags de mídia social podem ser consideradas se seu público-alvo tem uma presença em particular nelas, e você quer se assegurar de exibí-las.

  • Facebook Open Graph: Baixa Todos os Facebook Open Graph (OG) sĂŁo testados e nenhum está faltando ou com informações falsas. Imagens precisam ter no mĂ­nimo 600 x 315 pĂ­xels, 1200 x 630 pĂ­xels recomendados.
<meta property="og:type" content="website">
<meta property="og:url" content="https://example.com/page.html">
<meta property="og:title" content="Content Title">
<meta property="og:image" content="https://example.com/image.jpg">
<meta property="og:description" content="Description Here">
<meta property="og:site_name" content="Site Name">
<meta property="og:locale" content="en_US">
  • Twitter Card: Baixa
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@site_account">
<meta name="twitter:creator" content="@individual_account">
<meta name="twitter:url" content="https://example.com/page.html">
<meta name="twitter:title" content="Content Title">
<meta name="twitter:description" content="Descrição de conteúdo com menos de caracteres">
<meta name="twitter:image" content="https://example.com/image.jpg">

⬆ voltar ao topo


HTML

Melhores práticas

  • HTML5 Semantic Elements: Alta HTML5 Semantic Elements sĂŁo usados apropriadamente (header, section, footer, main...).
  • Páginas de erro: Alta Páginas para Error 404 e 5xx existem. Lembre-se de que páginas de erro 5xx precisam ter seu CSS integrado (sem chamadas externas no servidor atual).

  • Noopener: MĂ©dia Caso vocĂŞ esteja usando links externos com target="_blank", seu link deveria ter um atributo rel="noopener" para prevenir tab nabbing. Se vocĂŞ precisa suportar versões mais antigas do Firefox, use rel="noopener noreferrer".

  • Retirando comentários: Baixa CĂłdigo desnecessário precisa ser removido antes de enviar a página para produção.

Testando HTML

  • W3C compliant: Alta Todas as páginas precisam ser testadas com o validador W3C para identificar possĂ­veis problemas no cĂłdigo HTML.
  • HTML Lint: Alta Eu uso ferramentas para me ajudar a analisar quaisquer problemas que eu poderia ter com meu cĂłdigo HTML.
  • Verificador de Link: Alta NĂŁo há links quebrados na minha página, verifique que vocĂŞ nĂŁo tem nenhum erro 404.
  • Teste Bloqueadores de Publicidade: MĂ©dia Seu website mostra o conteĂşdo corretamente com adblockers habilitados (VocĂŞ pode providenciar uma mensagem encorajando os usuários a desabilitar o adblocker).

⬆ voltar ao topo


Webfonts

  • Formato de webfont: Alta WOFF, WOFF2 e TTF sĂŁo suportados por todos os navegadores modernos.
  • Tamanho de webfont: Alta Tamanhos de webfont nĂŁo excedem 2 MB (todas variantes incluĂ­das).

⬆ voltar ao topo


CSS

Notas: DĂŞ uma olhada em Guidelines CSS e Guidelines Sass seguidas pela maioria dos desenvolvedores Front-End. Se vocĂŞ tem alguma dĂşvida sobre propriedades CSS, vocĂŞ pode visitar a CSS Reference.

  • Web Design Responsivo: Alta O website está usando web design responsivo.
  • CSS Print: MĂ©dia Uma stylesheet de impressĂŁo correta Ă© providenciada em cada página.
  • Preprocessors: MĂ©dia Sua página está usando um preprocessor CSS (preferencialmente Sass).
  • Unique ID: Alta Se IDs sĂŁo usados, eles sĂŁo Ăşnicos Ă  página.
  • Reset CSS: Alta Um CSS reset (reset, normalize ou reboot) está em uso e atualizado. (Se vocĂŞ está usando um Framework CSS como Bootstrap ou Foundation, o Normalize já está incluĂ­do.)
  • JS prefix: Baixa Todas as classes (ou id- usados em arquivos) começam com js- e nĂŁo estĂŁo estilizadas nos arquivos CSS.
<div id="js-slider" class="my-slider">
<!-- ou -->
<div id="id-used-by-cms" class="js-slider my-slider">
  • CSS embed ou line: Alta Evite a todo custo o uso de CSS embutido em tags <style> ou inline: apenas utilizado por razões válidas (ex: background-image para slider, CSS critical).
  • Vendor prefixes: Alta Prefixos CSS de vendor sĂŁo usados e gerados de acordo com sua compatibilidade e suporte a navegadores.

Performance

  • Concatenation: Alta Arquivos CSS sĂŁo concatenados num arquivo Ăşnico. (NĂŁo para HTTP/2)
  • Minification: Alta Todos arquivos CSS sĂŁo minificados.
  • Non-blocking: MĂ©dia Arquivos CSS precisam ser non-blocking para prevenir o DOM de tirar tempo para carregar.
  • Unused CSS: Baixa Remover CSS inutilizado.

CSS testing

  • Stylelint: Alta Todos arquivos CSS ou SCSS estĂŁo sem nenhum erros.
  • Responsive web design: Alta Todas as páginas foram testatas nos seguintes breakpoints: 320px, 768px, 1024px (podem ser mais / diferentes de acordo com seu analytics).

  • CSS Validator: MĂ©dia O CSS foi testado e erros pertinentes foram corrigidos.

  • Navegadores Desktop: High Todas as páginas foram testadas em todos os navegadores desktop atuais (Safari, Firefox, Chrome, Internet Explorer, EDGE...).
  • Navegadores Mobile: High Todas as páginas foram testadas em todos os navegadores mobile atuais (Native browser, Chrome, Safari...).
  • SO: High Todas as páginas foram testadas em todos os Sistemas Operacionais atuais (Windows, Android, iOS, Mac...).
  • Pixel perfect: High Páginas estĂŁo alinhadas com o que foi desenhado. Dependendo na qualidade dos profissionais da área criativa, pode nĂŁo ser 100% exato, mas sua página precisa estar prĂłxima ao seu template.

Pixel Perfect - ExtensĂŁo Chrome

  • Direção de leitura: High Todas as páginas precisam ser testadas para idiomas LTR e RTL se elas precisarem dar esse suporte.

⬆ voltar ao topo


Imagens

Notas: Para um entendimento completo de otimização de imagem, veja o ebook grátis Essential Image Optimization, do Addy Osmani.

Melhores práticas

  • Optimization: Alta Todas as imagens sĂŁo otimizadas para renderização no navegador. Formato WebP poderia ser usado para páginas crĂ­ticas (como a Homepage).
  • Picture/Srcset: Medium VocĂŞ usa picture/srcset para providenciar a imagem mais apropriada para o viewport atual do usuário.
  • Retina: Baixa VocĂŞ providencia imagens em layout x2 ou 3x, e suporta retina display.
  • Sprite: MĂ©dia Imagens pequenas estĂŁo num arquivo sprite (no caso de Ă­cones, eles podem estar num sprite SVG).
  • Width e Height: Alta Determine os atributos width e height em <img> se a imagem final renderizada Ă© conhecida (pode ser omitido para CSS sizing).
  • Texto alternativo: High Todas as tags <img> tĂŞm um texto alternativo que descreve a imagem visualmente.

Nota: Vários desenvolvedores assumem que altura e largura não são compatíveis com design web responsivo. Absolutamente não é o caso.

  • Texto alternativo: Alta Todas tags <img> tĂŞm um texto alternativo que as descreve visualmente.
  • Lazy loading: MĂ©dia Imagens sĂŁo lazyloaded (Um noscript fallback Ă© sempre providenciado).

⬆ voltar ao topo


JavaScript

Melhores práticas

  • JavaScript Inline: Alta VocĂŞ nĂŁo tem nenhum cĂłdigo JavaSScript inline (misturado com seu cĂłdigo HTML, por exemplo).
  • Concatenation: Alta Arquivos JavaScript sĂŁo concatenados.
  • Minification: Alta Arquivos JavaScript sĂŁo minificados (vocĂŞ pode adicionar o sufixo .min).
  • JavaScript security:
  • Non-blocking: MĂ©dia Arquivos JavaScript sĂŁo carregados assĂ­ncronamente usando atributo async ou deferidos usando atributo defer.
  • Modernizr: Baixa Se vocĂŞ precisa visar features especĂ­ficas, Ă© possĂ­vel usar um Modernizr custom para adicionar classes na sua tag <html>.

JavaScript testing

  • ESLint: Alta Nenhum erro Ă© visĂ­vel pelo ESLint (baseando-se nas sua configuração ou regras prĂ©-estabelecidas).

⬆ voltar ao topo


Segurança

Scaneie e cheque seu website

Melhores práticas

  • HTTPS: MĂ©dia HTTPS Ă© usado em todas as páginas e para todo conteĂşdo externo (plugins, imagens...).
  • HTTP Strict Transport Security (HSTS): MĂ©dia O header HTTP está configurado com 'Strict-Transport-Security'.
  • Cross Site Request Forgery (CSRF): Alta VocĂŞ certifica requests feitas pro seu server-side sĂŁo legĂ­timas e originadas do seu website / app para prevenir ataques CSRF.
  • Cross Site Scripting (XSS): Alta Sua página ou website está livre de possĂ­veis problemas com XSS.
  • Content Type Options MĂ©dia Previne Google Chrome e Internet Explorer de tentar aplicar mime-sniff no content-type de uma response em relação ao que foi declarado no server.
  • X-Frame-Options (XFO) MĂ©dia Protege seus visitantes contra ataques clickjacking.

⬆ voltar ao topo


Performance

Melhores práticas

  • Weight page: Alta O peso de cada página está entre 0 e 500 KB.
  • Minified: MĂ©dia Seu HTML está minificado.
  • Lazy loading: MĂ©dia Imagens, scripts e CSS precisam ser carregados de modo lazy para melhorar o tempo de resposta da página atual (Veja detalhes nas seções respectivas).

  • Cookie size: Se vocĂŞ está usando cookies, certifique-se de que cada nĂŁo excede 4096 bytes e que seu domain name nĂŁo tem mais de 20 cookies.

  • Componentes de terceiros: Medium Iframes ou componentes de terceiros ("third party") que dependam em JavaScript externo (como botões de compartilhamento) sĂŁo substituidos por componentes estáticos quando possĂ­vel, assim limitando chamadas a APIs externas, e mantendo privadas as atividades de seus usuários.

Preparing upcoming requests

  • DNS resolution: Baixa DNS de serviços de terceiros que podem ser necessários sĂŁo adiantadamente preparados durante tempo ocioso, usando dns-prefetch.
<link rel="dns-prefetch" href="https://example.com">
  • Preconnection: Baixa DNS lookup, TCP handshake e negociação TLS com serviços que serĂŁo necessários em breve, sĂŁo ambos feitos adiantadamente durante tempo ocioso, usando preconnect.
<link rel="preconnect" href="https://example.com">
  • Prefetching: Baixa Recursos que serĂŁo necessários em breve (ex.: imagens em lazy loading) sĂŁo requisitados adiantadamente durante tempo ocioso, usando prefetch.
<link rel="prefetch" href="image.png">
  • Preloading: Baixa Recursos necessários na página atual (ex.: scripts colocados no fim do <body>) adiantadamente usando preload.
<link rel="preload" href="app.js">

Performance testing

  • Google PageSpeed: Alta Todas suas páginas foram testadas (nĂŁo sĂł a homepage) e tĂŞm um score de pelo menos 90/100.

⬆ voltar ao topo


Acessibilidade

Notas: VocĂŞ pode assistir a playlist A11ycasts com Rob Dodson đź“ą

Melhores práticas

  • Melhoramento progressivo: MĂ©dia Funcionalidades extensivas como a navegação principal e busca deveriam funcionar sem JavaScript habilitado.
  • Contraste de cor: MĂ©dia Contraste de cores deveria pelo menos passar WCAG AA (AAA para mobile).

Cabeçalhos

  • H1: Alta Todas as páginas tĂŞm uma tag H1 que nĂŁo Ă© o tĂ­tulo do website.
  • Cabeçalhos: Alta Cabeçalhos deveriam ser usados apropriadamente, na ordem correta (H1 atĂ© H6).

Landmarks

  • Role banner: Alta <header> tem role="banner".
  • Role navigation: Alta <nav> tem role="navigation".
  • Role main: Alta <main> tem role="main".

Semantics

  • Inputs HTML5 especĂ­ficos sĂŁo utilizados: MĂ©dia Isto Ă© especialmente importante para devices mobile, que mostram keypads e widgets customizados para diferentes tipos de input.

Form

  • Label: Alta Uma label Ă© associada a cada input de um formulário. Caso uma label nĂŁo possa ser exibida, use aria-label.

Accessibility testing

  • Testando padrões de Acessibilidade: Alta Use a ferramenta WAVE para testar se sua página respeita os padrões de acessibilidade.
  • Navegação por Teclado: Alta Teste seu website usando apenas seu teclado numa ordem previsĂ­vel. Todos elementos interativos sĂŁo alcançáveis e utilizáveis.
  • Screen-reader: MĂ©dia Todas as páginas foram testadas num screen-reader (VoiceOver, ChromeVox, NVDA ou Lynx).
  • Estilo de Foco: Alta Se o foco está desabilitado, ele Ă© substituĂ­do por um estado visĂ­vel em CSS.

⬆ voltar ao topo


SEO

  • Google Analytics: Alta Google Analytics Ă© corretamente instalado e configurado.
  • Headings logic: MĂ©dia Texto de cabeçalho ajuda a entender o conteĂşdo da página atual.
  • sitemap.xml: Alta Um sitemap.xml existe e foi submetido ao Google Search Console (anteriormente Google Webmaster Tools).
  • robots.txt: Alta O robots.txt nĂŁo está bloqueando webpages.
  • Dados Estruturados: Alta Páginas usando dados estruturados sĂŁo testadas e nĂŁo possuem erros. Dados estruturados ajudam crawlers a entender o conteĂşdo da página atual.
  • Sitemap HTML: MĂ©dia Um sitemap HTML Ă© providenciado e acessĂ­vel via um link no rodapĂ© do seu website.

⬆ voltar ao topo


Translation

O Front-End Checklist também está disponível em outros idiomas. Obrigado a todos tradutores por seu incrível trabalho!


Front-End Checklist Badge

Se você quer mostrar que está seguindo as regras do Front-End Checklist, ponha esta badge no seu arquivo README!

➔ Front‑End_Checklist followed

[![Front‑End_Checklist followed](https://img.shields.io/badge/Front‑End_Checklist-followed-brightgreen.svg)](https://github.com/thedaviddias/Front-End-Checklist/)

⬆ voltar ao topo


Contribuindo

Abra uma issue ou uma pull request para sugerir mudanças ou adições.

Guia

O repositĂłrio original do Front-End Checklist consiste em duas branches:

1. master

Esta branch consiste no arquivo README.md que Ă© automaticamente refletido no website Front-End Checklist.

2. develop

Esta branch será usada para fazer algumas mudanças significativas à estrutura, conteúdo se necessário. É preferível usar a branch master para arrumar erros pequenos ou adicionar um novo item.

Contribuidores

Veja todos os incrĂ­veis contribuidores.

Suporte

Se vocĂŞ tem alguma pergunta ou sugestĂŁo, nĂŁo hesite em usar o Gitter ou Twitter:

Autores

David Dias

Licença

CC0

⬆ voltar ao topo