← Voltar para Disciplinas

tds-as

Aula — Jornada acessível com GitHub, Copilot e MySQL

Professor: Mauro Borges França

Roteiro da aluna e orientações ao professor • Ensino médio e técnico

Você vai trabalhar com um repositório no GitHub, pedir ao GitHub Copilot que ajude a construir um cadastro de produtos, executar o sistema e conferir os dados diretamente no MySQL. A atividade será realizada com teclado e leitor de tela.

O que vamos construir

Um sistema web de produtos com cadastrar, consultar, alterar e excluir. Campos: ID automático, descrição, unidade, quantidade e estoque mínimo. Quantidade e estoque mínimo serão números inteiros não negativos; unidade será UN, CX ou PC.

A acessibilidade terá foco em pessoas cegas: rótulos anunciados, ordem lógica de navegação e mensagens compreensíveis. A interface continuará utilizável por outras pessoas; não é necessário restringir seu uso pela condição visual.

Como usar este roteiro

Ambiente adotado: Windows, NVDA, Chrome ou Edge, VS Code, GitHub Copilot, Node.js e MySQL 8.4. O professor deve preparar as instalações antes da aula. Os nomes de controles podem aparecer em inglês ou português.

Leia uma etapa por vez. Os títulos usam a estrutura semântica do HTML e permitem navegação pelo leitor de tela. Todo comando está em texto copiável. Não digite os marcadores de numeração dos passos.

Organização sugerida

Quatro encontros de aproximadamente 50 minutos: 1 — repositório e preparação do ambiente; 2 — VS Code e banco; 3 — geração e execução do CRUD; 4 — testes, consultas SQL e entrega. Ajuste o ritmo conforme a familiaridade da aluna com o NVDA.

Conferência final: explicar a função do repositório, executar as quatro operações e demonstrar no banco o resultado das mudanças.

Para o professor

O material retoma histórias de usuário e critérios de aceite presentes na atividade de backlog fornecida. A complexidade foi reduzida a uma entidade. Este roteiro foi conferido documentalmente, mas precisa de um ensaio no computador da aluna: versões, idioma e configurações de teclado podem alterar o comportamento.

Etapa 1 — Preparar o laboratório

Esta etapa é do professor, antes da atividade. A instalação não deve consumir o tempo destinado à aprendizagem da jornada.

  1. Instalar e testar NVDA, navegador, Git for Windows, VS Code, Node.js LTS e MySQL Server 8.4 com o cliente mysql. MySQL Workbench não é necessário.
  2. Confirmar o serviço MySQL em execução e o comando mysql disponível no PATH. Guardar a senha administrativa com o professor.
  3. Confirmar a conta GitHub da aluna e o funcionamento do Copilot no VS Code, incluindo autenticação e disponibilidade de uso. Não presumir acesso ilimitado.
  4. No VS Code, abrir Configurações com Ctrl+, e pesquisar editor.accessibilitySupport. Definir como on. Se necessário, usar a Paleta de Comandos para localizar o comando de alternar suporte a leitor de tela.
  5. Abrir o terminal por Ctrl+Shift+P, pesquisar Terminal: Create New Terminal e pressionar Enter. Usar PowerShell neste roteiro.
  6. Executar os comandos abaixo, um de cada vez. Cada um deve informar uma versão. Se não funcionar, corrigir a instalação ou o PATH e reabrir o VS Code.
git --version
node --version
npm.cmd --version
mysql --version

Usaremos npm.cmd no PowerShell para evitar o bloqueio do arquivo npm.ps1 por políticas de execução. Não é necessário alterar a política do computador.

Combinados de acessibilidade

Pergunte qual tecla modificadora NVDA está configurada: Insert ou Caps Lock. Nesta apostila, NVDA representa essa tecla. Valide leitura de campos, chat e terminal com a própria aluna. Não presuma que ausência de erro visual significa acesso por leitor de tela.

O professor pode apoiar autenticação e instalação. Durante os exercícios, a aluna deve poder operar o teclado, ouvir os resultados e decidir a próxima ação. Não avaliar velocidade de navegação.

Arquitetura em palavras

O navegador exibe o formulário. Um servidor Node.js com Express recebe as ações e consulta o MySQL. O MySQL guarda os registros. O navegador não recebe a senha do banco. O GitHub guarda código e histórico de alterações, mas não executa o banco local.

Etapa 2 — Atalhos para consultar durante a aula

Windows e navegador

Alt+Tab: alternar entre programas. Ctrl+L: ir à barra de endereços. Tab: próximo controle. Shift+Tab: controle anterior. Enter: ativar link ou botão. Espaço: marcar caixa de seleção ou ativar botão. Esc: fechar menu ou diálogo, quando disponível.

NVDA

NVDA+Espaço: alternar entre modo de navegação e modo de foco. No modo de navegação, H vai ao próximo título, B ao próximo botão e E ao próximo campo de edição. Shift com a letra faz o percurso inverso. Essas letras não devem ser usadas como navegação enquanto você estiver digitando.

NVDA+F7: abrir a lista de elementos. NVDA+Tab: anunciar o foco atual. Ctrl: interromper a fala. Use as setas para ler o texto. O roteiro não depende de uma quantidade fixa de pressionamentos de Tab.

VS Code no Windows

Ctrl+Shift+P: abrir a Paleta de Comandos. Ctrl+P: abrir arquivo pelo nome. Ctrl+S: salvar. Ctrl+1: focar o primeiro grupo de editores. Ctrl+Shift+X: abrir extensões.

Ctrl+Alt+I: abrir o chat. Alt+F1: ajuda de acessibilidade da área atual. Alt+F2: abrir a visualização acessível de conteúdo compatível, como resposta do chat ou saída do terminal. Esc: sair dessa visualização.

Ctrl+M: alternar se Tab movimenta o foco ou insere tabulação no editor. Se ficar presa no editor, use Ctrl+M e tente Tab. No terminal, prefira a Paleta de Comandos para sair da área ou mudar de comando.

Para criar ou focar um terminal, use Ctrl+Shift+P e pesquise Terminal: Create New Terminal ou Terminal: Focus Terminal. O nome pode ser traduzido. Essa alternativa evita atalhos dependentes da posição da tecla de acento no teclado ABNT2.

Se um atalho não funcionar

  1. Ouça o foco com NVDA+Tab. Confirme em qual programa e campo você está.
  2. No navegador, confira o modo de navegação ou foco. No VS Code, abra a Paleta de Comandos e procure a ação pelo nome.
  3. Se necessário, abra os atalhos do VS Code com Ctrl+K e depois Ctrl+S. Pesquise a ação e confira a combinação configurada. Em notebooks, as teclas F1 e F2 podem exigir Fn.

Fontes dos atalhos: manual do NVDA e documentação de acessibilidade do VS Code, relacionados ao final. Atalhos locais do GitHub podem conflitar com a navegação por letras do NVDA; por isso, priorizamos nomes de controles e links diretos.

Etapa 3 — Criar o repositório

Criar o repositório

  1. No navegador, pressione Ctrl+L, digite https://github.com/new e pressione Enter. Entre na conta se solicitado.
  2. Com Tab ou a navegação de campos do NVDA, localize Repository name. Digite crud-produtos-acessivel.
  3. Na descrição, escreva: Cadastro de produtos com teclado, leitor de tela e MySQL.
  4. Selecione Private. Marque Add README. Em Add .gitignore, selecione Node, se disponível; também criaremos as regras pelo Copilot.
  5. Localize Create repository e ative. Confira se a página anuncia o nome do repositório. Copie seu endereço com Ctrl+L e Ctrl+C. Guarde-o em uma anotação.

Conferência: o repositório existe e contém README.md. Repositório é o local do código e do histórico de alterações.

Como localizar controles

Use NVDA+F7 para listar links e títulos. Para botões e campos, use B e E em modo de navegação, ou Tab. Ative somente depois de ouvir o nome. Menus podem exigir setas, Enter e Esc; grades interativas podem exigir modo de foco. Se um controle não for anunciado, registre a barreira com o professor.

As instruções de criação seguem a documentação oficial do GitHub. A posição e a tradução dos controles podem variar; os objetivos de cada passo permanecem os mesmos.

Etapa 4 — Abrir o repositório no VS Code

  1. Abra o VS Code. Pressione Ctrl+Shift+P, procure Git: Clone e pressione Enter.
  2. Cole o endereço do repositório. Escolha uma pasta local, por exemplo Documentos. Se solicitado, autentique-se no GitHub pelo navegador.
  3. Ao concluir, escolha Open para abrir o repositório clonado. Confirme a confiança apenas para esta pasta de aula conhecida.
  4. Pressione Ctrl+P, digite README.md e Enter. Confira o nome do projeto.
  5. Crie um terminal pela Paleta de Comandos. Execute Get-Location e confirme que o caminho termina em crud-produtos-acessivel.

Conhecer o Copilot

  1. Pressione Ctrl+Alt+I para abrir o chat. Se necessário, o professor conclui a instalação e o login do GitHub Copilot.
  2. Use Tab até o campo de mensagem. Envie o prompt de planejamento abaixo. Use Enter para enviar e Shift+Enter para quebra de linha, conforme o campo anunciar.
  3. Foque a resposta e use Alt+F2 para ler na visualização acessível. Use as setas e Esc para voltar.
  4. Para gerar arquivos, selecione no chat um modo capaz de editar a pasta, como Agent, quando disponível. Revise as alterações e os comandos propostos antes de aceitar. Se houver somente conversa, solicite um arquivo por vez e salve com Ctrl+N, Ctrl+Shift+S e o nome indicado.

Prompt de planejamento

Sou estudante do ensino técnico e uso NVDA com teclado. Vamos construir um CRUD web de produtos com Node.js, Express, mysql2, dotenv e HTML sem framework. Campos: id automático, descricao, unidade, quantidade e estoque_minimo. Usaremos MySQL 8.4 local e banco aula_crud. Explique em linguagem simples o papel do navegador, servidor e banco. Apresente um plano curto. Ainda não crie arquivos nem execute comandos. Responda em português, com passos numerados e sem depender de imagens.

Como trabalhar com vibe coding

Descreva o resultado desejado, leia a proposta, gere uma parte, execute e confira. O Copilot pode errar: uma resposta convincente não prova que o código funciona ou é acessível. Não forneça a senha real do banco ao chat. Peça explicações sobre trechos que não compreender.

Conferência: você consegue abrir um arquivo, usar o chat e ouvir uma resposta. A cópia local do repositório está aberta.

Etapa 5 — Criar o banco e a tabela

No terminal PowerShell do VS Code, abra o cliente clássico mysql. Não use mysqlsh neste roteiro. O professor informa ou digita a senha administrativa.

mysql -u root -p

Digite a senha quando solicitado e pressione Enter. Os caracteres podem não aparecer. Quando o prompt mysql> aparecer, os comandos seguintes são SQL. Não digite mysql> junto com o comando.

CREATE DATABASE aula_crud
  CHARACTER SET utf8mb4;
USE aula_crud;
CREATE TABLE produtos (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  descricao VARCHAR(100) NOT NULL,
  unidade ENUM('UN', 'CX', 'PC') NOT NULL,
  quantidade INT NOT NULL DEFAULT 0,
  estoque_minimo INT NOT NULL DEFAULT 0,
  CHECK (CHAR_LENGTH(TRIM(descricao)) > 0),
  CHECK (quantidade >= 0),
  CHECK (estoque_minimo >= 0)
);

Execute uma instrução completa de cada vez, até o ponto e vírgula. O prompt -> indica que o comando ainda não terminou. Para cancelar uma instrução incompleta, digite \c e Enter. Se o banco já existir, não o apague: peça ao professor para verificar a atividade anterior.

Criar o usuário da aplicação com o professor

Substitua TROQUE_POR_SENHA_LOCAL por uma senha definida para esta aula. Use a mesma senha no arquivo .env posteriormente. Não salve a senha real no repositório.

CREATE USER 'aluna_crud'@'localhost'
  IDENTIFIED BY 'TROQUE_POR_SENHA_LOCAL';
GRANT SELECT, INSERT, UPDATE, DELETE
  ON aula_crud.* TO 'aluna_crud'@'localhost';
SHOW TABLES;
DESCRIBE produtos;
SELECT COUNT(*) AS total FROM produtos;
exit;

Resultado esperado em um banco novo: tabela produtos existente e total igual a 0. Query OK indica execução bem-sucedida de comandos como CREATE. O usuário da aplicação pode manipular registros, mas não administrar o servidor.

Testar o acesso da aplicação

mysql -h localhost -u aluna_crud -p aula_crud
SELECT COUNT(*) AS total FROM produtos;
exit;

Conferência: o login aluna_crud consegue consultar a tabela vazia. Guarde o SQL de criação sem senha real em schema.sql quando o Copilot montar os arquivos.

Etapa 6 — Pedir ao Copilot a construção do CRUD

Envie o prompt abaixo após criar o banco. Ele define o contrato entre o banco já existente e o código que será gerado.

Prompt de implementação

Implemente na pasta aberta um CRUD didático de produtos. Use Node.js, Express, mysql2/promise e dotenv; HTML, CSS e JavaScript simples no navegador. Não use React, Docker, ORM, autenticação ou localStorage. O banco MySQL aula_crud já existe. A tabela produtos possui id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, descricao VARCHAR(100), unidade ENUM UN/CX/PC, quantidade INT e estoque_minimo INT. Os campos são obrigatórios, descrição de 1 a 100 caracteres após trim e os dois números são inteiros não negativos.

Crie package.json com script start para node server.js; server.js; public/index.html; public/app.js; public/style.css; .env.example; .gitignore; schema.sql e README.md. Use CommonJS de forma consistente. Dependências: express, mysql2 e dotenv. O schema deve reproduzir a tabela existente, incluindo as validações, sem apagar dados e sem conter senha ou CREATE USER. Não execute o schema automaticamente.

O servidor deve servir public e uma API /api/produtos na porta 3000, escutando apenas em localhost. Faça GET para listar, POST para cadastrar, PUT /api/produtos/:id para alterar e DELETE /api/produtos/:id para excluir. Use consultas parametrizadas, pool MySQL, validação no servidor, tratamento de erros e respostas de erro claras, sem expor credenciais. Não conecte o navegador diretamente ao MySQL. Mostre sucesso somente após confirmação do banco.

A interface deve funcionar integralmente com teclado e NVDA. Use lang pt-BR, título de página, main, h1, labels associados a campos, botões HTML nativos e foco visível. O ID é automático e não editável. Liste produtos em lista semântica, cada um com todos os valores e botões como Editar produto Caderno e Excluir produto Caderno. Não use botões só com ícones, tabindex positivo, arrastar e soltar ou fala sintetizada própria.

Inclua região de status anunciada para sucessos e região de alerta para erros. Ao editar, preencha os campos e mova o foco para descrição. Em erros, preserve os valores e indique o campo problemático. Na exclusão, apresente confirmação acessível com nome do produto e botões Confirmar exclusão e Cancelar. Garanta retorno de foco após cancelar, salvar ou excluir, sem deixá-lo em elemento removido. Pode usar uma seção de confirmação no fluxo da página, sem modal.

Use no .env.example DB_HOST=localhost, DB_PORT=3306, DB_USER=aluna_crud, DB_PASSWORD=preencher_localmente, DB_NAME=aula_crud e PORT=3000. Ignore .env e node_modules no Git. Não gere minha senha. Não instale dependências ou inicie o servidor automaticamente. Ao finalizar, explique cada arquivo e diga como executar com npm.cmd install e npm.cmd start. Não declare acessibilidade validada sem teste com NVDA.

Conferência: use Ctrl+P para abrir os arquivos citados. Peça ao Copilot para corrigir qualquer divergência do contrato antes de continuar.

Etapa 7 — Configurar e executar o sistema

  1. No VS Code, pressione Ctrl+P e abra .env.example. Leia os nomes das variáveis.
  2. No PowerShell, na pasta do projeto, execute Copy-Item .env.example .env. Faça isso apenas na primeira configuração, para não sobrescrever a senha depois.
  3. Pressione Ctrl+P e digite .env. Preencha DB_PASSWORD com a senha local definida na etapa anterior; mantenha os outros valores. Salve com Ctrl+S.
  4. Abra .gitignore com Ctrl+P. Confira se contém .env e node_modules/.
  5. Volte ao PowerShell e instale as dependências. Depois inicie o servidor com os comandos abaixo.
npm.cmd install
npm.cmd start

O terminal permanecerá ocupado enquanto o servidor estiver rodando. Não feche esse terminal. Leia a saída usando Alt+F2. Se houver erro, resolva antes de abrir a página.

  1. Alterne para o navegador. Pressione Ctrl+L, digite http://localhost:3000 e Enter.
  2. Em modo de navegação do NVDA, pressione H para localizar o título. Use Tab para percorrer os campos e botões.
  3. Confira os rótulos Descrição, Unidade, Quantidade e Estoque mínimo. Se não forem anunciados corretamente, corrija antes de cadastrar.

Prompt para corrigir uma barreira

Ao usar NVDA e teclado, fiz [ação] e ouvi [resultado]. Eu esperava [resultado]. Corrija somente o problema relacionado, preserve os dados e explique quais arquivos alterou. Não diga que a correção foi testada com NVDA; eu farei a conferência.

Abrir o segundo terminal

No VS Code, use a Paleta de Comandos e Terminal: Create New Terminal. Use esse segundo terminal para consultar o banco enquanto o primeiro mantém o servidor em execução. Depois de alterar server.js, pare o servidor no primeiro terminal com Ctrl+C e execute npm.cmd start novamente. Mudanças no HTML e JavaScript do navegador exigem atualizar a página.

Conferência: o sistema abre e anuncia a lista vazia. Se a porta 3000 estiver ocupada, o professor deve identificar o processo ou ajustar PORT e o endereço de acesso de forma consistente.

Etapa 8 — Testar o CRUD e conferir no MySQL

Use apenas os dois produtos fictícios desta etapa. Anote os IDs gerados: eles não precisam começar em 1.

Cadastrar e consultar

  1. No navegador, cadastre Caderno, unidade UN, quantidade 10 e estoque mínimo 2. Use Tab para avançar e o botão Salvar para concluir. Ouça a confirmação.
  2. Cadastre Caneta, unidade CX, quantidade 5 e estoque mínimo 1. Confira a lista usando o NVDA.
  3. No segundo terminal, conecte-se ao banco e execute a consulta abaixo.
mysql -h localhost -u aluna_crud -p aula_crud
SELECT id, descricao, unidade, quantidade, estoque_minimo
FROM produtos ORDER BY id\G

A terminação \G usa G maiúsculo e substitui o ponto e vírgula nessa consulta. Ela apresenta um campo por linha, favorecendo a leitura. No terminal, use Alt+F2 para ouvir a saída e Esc para voltar.

Esperado: Caderno com quantidade 10 e Caneta com quantidade 5. A conferência deve acontecer no banco, não apenas na mensagem da página.

Alterar e conferir

  1. No navegador, localize Editar produto Caderno. Altere quantidade para 12 e salve.
  2. No cliente MySQL, execute a consulta seguinte. Confirme o mesmo ID, descrição Caderno e quantidade 12.
SELECT id, descricao, quantidade
FROM produtos WHERE descricao = 'Caderno'\G

Excluir e conferir

  1. Na página, acione Excluir produto Caneta. Primeiro escolha Cancelar e confirme que ela permanece.
  2. Repita a ação e escolha Confirmar exclusão. Ouça a mensagem e confira onde o foco ficou.
  3. No banco, execute a consulta abaixo. O total esperado de Caneta é 0.
SELECT COUNT(*) AS total_caneta
FROM produtos WHERE descricao = 'Caneta';

Demonstrar persistência

Atualize a página: Caderno deve continuar com 12. Para uma verificação adicional, pare o servidor com Ctrl+C no primeiro terminal, execute npm.cmd start e abra novamente a página. O registro deve continuar no MySQL. Encerre o cliente SQL com exit; quando terminar.

Etapa 9 — Validar acessibilidade e registrar evidências

Testes conduzidos pela aluna

  1. Percorra toda a página apenas com teclado. Todos os campos e ações devem ser alcançáveis e o foco não pode ficar preso.
  2. Ouça os rótulos e valores. Cada botão de editar ou excluir deve identificar seu produto.
  3. Tente salvar sem descrição. O cadastro deve ser recusado e o problema precisa ser compreensível pelo NVDA.
  4. Tente quantidade -1 e depois 1,5. Ambas devem ser recusadas, pois a atividade exige inteiros não negativos. Restaure um valor válido.
  5. Confira os anúncios após cadastrar, alterar e excluir. Não basta o texto aparecer visualmente.
  6. Teste Cancelar na exclusão e no modo de edição, se existir. Os dados devem permanecer e o foco deve continuar em posição previsível.

Registrar o resultado no README

Abra README.md com Ctrl+P e acrescente, com suas palavras: objetivo; tecnologias; como iniciar; operações testadas; valores encontrados no MySQL; barreiras encontradas e correções realizadas. Não inclua senha. Você pode pedir ao Copilot uma estrutura, mas os resultados devem ser os que você realmente observou.

Modelo de registro: “Cadastrei Caderno com quantidade 10. Consultei no MySQL e encontrei o registro. Alterei para 12 e confirmei no banco. Cancelei a exclusão de Caneta e ela permaneceu. Depois confirmei a exclusão e a consulta retornou zero registros de Caneta.”

Perguntas para explicar oralmente

Qual é a função do repositório? O que o Copilot ajudou a produzir? Por que a senha fica no servidor? Como você comprovou que os dados chegaram ao MySQL? O que acontece com os dados quando o navegador fecha?

Entrega sugerida: endereço do repositório e README com relato dos testes. O professor pode receber uma demonstração oral e textual, sem exigir capturas de tela.

Etapa 10 — Salvar o código no GitHub

Esta etapa finaliza a jornada com o código versionado. Execute no PowerShell da pasta do projeto, fora do cliente MySQL. Se o terminal mostrar mysql>, digite exit; primeiro.

  1. Salve os arquivos no VS Code. Execute git status para conferir alterações.
  2. Confira que .env está ignorado e que não há senhas reais em outros arquivos. O comando abaixo deve mostrar a regra que ignora .env. Se não mostrar nada, corrija .gitignore antes de continuar.
git check-ignore -v .env

Adicione somente os arquivos previstos. Se algum estiver ausente, localize-o antes de executar o comando; não substitua por inclusão indiscriminada.

git add README.md package.json package-lock.json server.js public .gitignore .env.example schema.sql
git diff --cached --stat
git diff --cached --name-only

Confira que .env e node_modules não aparecem. Se .env tiver sido adicionado, retire-o da preparação com git restore --staged .env e corrija a regra de exclusão. Se uma senha já tiver sido publicada, avise o professor e troque a credencial.

git commit -m "Implementa CRUD acessivel de produtos"
git push

Se o Git pedir identidade, configure apenas neste repositório com os comandos abaixo, substituindo os valores. Pode usar o endereço de privacidade fornecido nas configurações de e-mail do GitHub. Depois repita commit e push.

git config user.name "SEU NOME"
git config user.email "SEU EMAIL DO GITHUB"

Se o push pedir autenticação, siga o login pelo navegador do Git Credential Manager. Não use a senha da conta GitHub como senha Git. Não force o envio em caso de conflito; leia o erro com o professor.

Conferir a entrega

  1. Abra o repositório no navegador e atualize a página. Confira o novo commit e os arquivos.
  2. Leia o README e verifique se explica como rodar a aplicação.
  3. Confirme que o arquivo .env não está publicado. O .env.example deve conter somente o marcador de preenchimento.

GitHub guarda o código. O banco e seus registros continuam no computador da aula. Para outra pessoa executar, ela deve criar seu próprio banco e preencher seu próprio .env seguindo o README.

Etapa 11 — Resolver dificuldades e consultar fontes

Dificuldades frequentes

mysql não reconhecido: pedir ao professor para conferir a instalação e o PATH. Não é um erro no SQL. Access denied: conferir usuário, senha e host; não recriar contas sem investigar.

Can’t connect ou ECONNREFUSED: conferir se o serviço MySQL está iniciado e se DB_HOST e DB_PORT correspondem à instalação. Unknown database ou tabela inexistente: conferir a etapa 5 e os nomes no .env.

Cannot find module: executar npm.cmd install na pasta que contém package.json. Servidor não abre: ouvir o erro do terminal e conferir se npm.cmd start continua rodando.

A página confirma, mas o banco não muda: conferir o banco do .env, a consulta SQL, a resposta da API e se o código gerado está realmente usando MySQL. Não aceitar uma implementação que apenas guarde dados em memória.

NVDA não lê a saída: focar o terminal, usar Alt+F2 e setas. Se não houver conteúdo compatível, pedir ao professor para testar o perfil de terminal e a configuração de acessibilidade. No chat, focar a resposta antes de abrir a visualização acessível.

Referências oficiais

Consultadas em 16 de setembro de 2026. Os nomes das interfaces e os atalhos devem ser confirmados na instalação da escola. Fontes documentais não substituem teste de usabilidade com a aluna.

NVDA — manual do usuário

VS Code — acessibilidade

VS Code — acesso ao chat e recursos de IA

GitHub — criar repositório

MySQL — cliente de linha de comando