Entregável 4: Git/GitHub + Acessibilidade WCAG 2.1 + Documentação Técnica
Plataforma web desenvolvida em JavaScript puro para democratizar o acesso à educação em tecnologia.
| Categoria | Meta | Status |
|---|---|---|
| 🔄 Git/GitHub | Repositório organizado + commits descritivos | 🎯 Em andamento |
| ♿ Acessibilidade | WCAG 2.1 Nível AA | 🎯 Em implementação |
| 📚 Documentação | README profissional completo | ✅ Concluído |
| 🎨 Front-End | SPA com Bootstrap 5 | ✅ Concluído |
| ⚡ Performance | Otimização e boas práticas | 🎯 Planejado |
Uma Single Page Application (SPA) moderna desenvolvida com:
- JavaScript ES6+ puro (Vanilla JS)
- Bootstrap 5 via CDN
- Roteamento baseado em hash
- Sistema de templates dinâmicos
- Validação de formulários em tempo real
✅ SPA Funcional: Navegação suave sem recarregar a página
✅ 8 Páginas: Home, Sobre, Projetos, Cadastro, Doações, Transparência, Blog, Contato
✅ Responsivo: Bootstrap 5 com design mobile-first
✅ Validação: Formulários com feedback em tempo real
✅ Componentes: Header e Footer reutilizáveis
✅ Filtros: Sistema de filtros para projetos por categoria
code-for-all/
├── index.html # Ponto de entrada único
├── assets/
│ ├── js/
│ │ ├── app.js # Core da SPA (roteamento + lifecycle)
│ │ ├── components.js # Header e Footer reutilizáveis
│ │ ├── templates.js # Templates HTML das 8 páginas
│ │ ├── validation.js # Sistema de validação
│ │ └── projects-filter.js # Filtros de projetos
│ ├── css/backup_css/ # CSS antigo (backup)
│ ├── images/ # Imagens do site
│ └── audios/ # Depoimentos em áudio
├── backup_html/ # HTMLs antigos (antes da SPA)
├── wireframes/ # Wireframes do projeto
└── README.md # Este arquivo
Nenhuma dependência npm! O projeto usa apenas:
- Bootstrap 5.3.2 (CDN)
- Bootstrap Icons 1.11.1 (CDN)
- Google Fonts - Noto Sans (CDN)
| Tecnologia | Uso | Versão |
|---|---|---|
| HTML5 | Estrutura semântica | - |
| CSS3 | Bootstrap 5 via CDN | 5.3.2 |
| JavaScript | ES6+ Vanilla JS | - |
| Bootstrap | Framework CSS responsivo | 5.3.2 |
| Bootstrap Icons | Biblioteca de ícones | 1.11.1 |
| Git | Controle de versão | - |
| GitHub | Repositório remoto | - |
// Roteamento baseado em hash
const routes = {
"/": "home",
"/sobre": "sobre",
"/projetos": "projetos",
"/cadastro": "cadastro",
"/doacoes": "doacoes",
"/transparencia": "transparencia",
"/blog": "blog",
"/contato": "contato"
};Fluxo de Navegação:
- Usuário clica em link (ex: "Sobre")
- URL muda para
#/sobre - Event listener detecta mudança (hashchange)
app.jscarrega template correspondente- Conteúdo renderizado dinamicamente no
#app-content - Components atualizados (link ativo, título da página)
Cada página é uma função que retorna HTML:
const Templates = {
home: () => `<div>...</div>`,
sobre: () => `<div>...</div>`,
// ... demais páginas
};- Validação em tempo real (blur + input)
- Feedback visual (Bootstrap classes: is-valid/is-invalid)
- Máscaras automáticas (CPF, telefone, CEP)
- Persistência no localStorage
- Mensagens de erro descritivas
Validation.init('cadastroForm');
Validation.initMasks();Header:
- Navbar responsiva
- Menu hamburguer (mobile)
- Logo SVG
- Links com estado ativo
Footer:
- Links rápidos
- Redes sociais
- Informações da ONG
Sistema de filtros por categoria:
- Educação
- Saúde
- Tecnologia
- Meio Ambiente
- Todos
# Simplesmente abra o arquivo index.html
code-for-all/index.html# Python 3
python -m http.server 8000
# Node.js
npx http-server -p 8000
# PHP
php -S localhost:8000Depois acesse: http://localhost:8000
- Instale a extensão "Live Server"
- Clique com botão direito em
index.html - Selecione "Open with Live Server"
- Tab/Shift+Tab para navegação
- Enter/Space para ativar elementos
- Esc para fechar modais
- Skip links ("Pular para conteúdo")
- Landmarks (
<nav>,<main>,<footer>) - Labels descritivos em formulários
-
aria-labelearia-describedby -
aria-livepara anúncios dinâmicos - Estrutura de headings lógica
- Texto: mínimo 4.5:1
- UI components: mínimo 3:1
- Modo escuro (opcional)
- Alto contraste (opcional)
- Alt text descritivo em todas as imagens
- Legendas em vídeos
- Transcrições de áudios
- Ícones decorativos com
aria-hidden="true"
- Labels sempre visíveis
- Mensagens de erro claras
- Feedback visual e textual
- Validação acessível
| Breakpoint | Layout | Testado |
|---|---|---|
| < 576px (Mobile) | 1 coluna | ✅ |
| 576-768px (Tablet) | 2 colunas | ✅ |
| 768-992px (Desktop) | 3 colunas | ✅ |
| > 992px (Wide) | 3-4 colunas | ✅ |
Bootstrap 5 Grid System com classes responsivas.
main ← Branch principal (produção)
└── develop ← Branch de desenvolvimento (futuro)
<tipo>(<escopo>): <descrição>
Exemplos:
feat(spa): add routing system
fix(validation): correct email regex
docs(readme): update installation guide
style(css): format with prettier
refactor(components): simplify header logic
| Tipo | Descrição |
|---|---|
feat |
Nova funcionalidade |
fix |
Correção de bug |
docs |
Documentação |
style |
Formatação |
refactor |
Refatoração |
perf |
Performance |
test |
Testes |
chore |
Manutenção |
class App {
constructor() // Inicializa app
init() // Setup inicial
renderComponents() // Renderiza header/footer
setupRouting() // Configura rotas e listeners
loadPage() // Carrega página baseada na rota
initPageFeatures(page) // Inicializa features específicas
setupProjectFilters() // Configura filtros de projetos
showSpinner() // Mostra loading
hideSpinner() // Esconde loading
}const Templates = {
home: () => '...', // Página inicial
sobre: () => '...', // Sobre a ONG
projetos: () => '...', // Lista de projetos
cadastro: () => '...', // Formulário voluntários
doacoes: () => '...', // Campanhas de doação
transparencia: () => '...', // Relatórios
blog: () => '...', // Notícias
contato: () => '...' // Formulário contato
};const Validation = {
init(formId) // Inicializa validação
validateField(input) // Valida campo individual
validateForm(form) // Valida formulário completo
applyMask(input, type) // Aplica máscara
handleSubmit(form) // Processa envio
};const Components = {
renderHeader() // Retorna HTML do header
renderFooter() // Retorna HTML do footer
updateActiveNav(path) // Marca link ativo
};- Navegação entre todas as 8 páginas
- Renderização de templates
- Validação de formulários (cadastro)
- Validação de formulários (contato)
- Validação de formulários (doações)
- Filtros de projetos funcionando
- Máscaras de input (CPF, telefone, CEP)
- Persistência no localStorage
- Links ativos na navegação
- Responsividade (mobile, tablet, desktop)
- Testes de acessibilidade (pendente)
- Testes de performance (pendente)
- ✅ Chrome 120+
- ✅ Firefox 120+
- ✅ Edge 120+
⚠️ Safari 17+ (teste parcial)
-
Acessibilidade WCAG 2.1 AA
- Navegação por teclado completa
- ARIA labels e landmarks
- Contraste de cores validado
- Testes com leitores de tela
-
Otimização
- Minificação de CSS/JS
- Compressão de imagens
- Lazy loading
- Service Worker para cache
-
Git/GitHub
- Histórico de commits organizado
- Pull Requests documentados
- Issues rastreadas
- Releases versionadas
-
Build Tools
- Configurar Vite ou Webpack
- npm scripts para build
- Minificação automatizada
- Sourcemaps
-
Testes
- Testes unitários (Vitest)
- Testes E2E (Playwright)
- Cobertura de código
-
Backend
- API REST com Node.js
- Banco de dados
- Autenticação
- Painel administrativo
-
PWA
- Manifest.json
- Service Workers avançados
- Modo offline
- Instalável
| Métrica | Valor |
|---|---|
| Linhas de Código | ~3.000 |
| Arquivos JavaScript | 5 |
| Páginas (Templates) | 8 |
| Componentes | 2 (Header, Footer) |
| Formulários | 4 |
| Commits | 🎯 Em desenvolvimento |
| Tamanho Total | ~500 KB |
-
Fork o repositório
-
Clone seu fork
git clone https://github.com/SEU_USUARIO/code-for-all.git
-
Crie uma branch
git checkout -b feature/minha-feature
-
Faça suas alterações
-
Commit com mensagem descritiva
git commit -m "feat(spa): add new page" -
Push para seu fork
git push origin feature/minha-feature
-
Abra um Pull Request
- ✅ Usar ES6+ (const/let, arrow functions, template literals)
- ✅ Comentários em português
- ✅ Indentação de 2 espaços
- ✅ Nomenclatura clara e descritiva
- ✅ Funções pequenas e focadas
Este projeto é acadêmico, desenvolvido para fins educacionais.
MIT License - Livre para uso, modificação e distribuição.
- 🌐 Repositório: https://github.com/guiireal/code-for-all
- 🐛 Issues: https://github.com/guiireal/code-for-all/issues
- 📧 E-mail: contato@codeforall.org
- 📘 Facebook: @codeforallbrasil
- 📷 Instagram: @codeforall.br
- 💼 LinkedIn: Code for All Brasil
- 🐦 Twitter: @codeforall_br
Obrigado por conferir o projeto Code for All!
Se este projeto foi útil, considere dar uma ⭐ no repositório!
Desenvolvido com ❤️ para democratizar o acesso à tecnologia
Última atualização: 16 de Outubro de 2025
Versão: 4.0.0-dev (Em desenvolvimento)
Status: 🎯 Entregável 4 em andamento