10 módulos organizados em uma jornada progressiva: do HTML básico até o projeto final completo.
Progresso geral:
Semana 1–2 · Introdução ao desenvolvimento web
Tópicos
Atividades
Exemplo Rápido
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Minha Página</title>
</head>
<body>
<h1>Olá, Mundo!</h1>
<p>Meu primeiro HTML.</p>
</body>
</html>
Semana 3–4 · Estilização e design responsivo
Tópicos
Atividades
Exemplo Rápido
/* Flexbox centralizado */
.container {
display: flex;
justify-content: center;
align-items: center;
gap: 1rem;
flex-wrap: wrap;
}
/* Grid de 3 colunas */
.grid-3 {
display: grid;
grid-template-columns:
repeat(3, 1fr);
gap: 1rem;
}
Semana 5–6 · Lógica de programação no browser
Tópicos
Atividades
Exemplo Rápido
// Arrow function + filter + map
const produtos = [
{ nome: 'Livro', preco: 45 },
{ nome: 'Caneta', preco: 5 },
{ nome: 'Caderno', preco: 30 }
];
const caros = produtos
.filter(p => p.preco > 10)
.map(p => p.nome);
console.log(caros);
// ['Livro', 'Caderno']
Semana 7 · Interatividade com JavaScript
Tópicos
Atividades
Exemplo Rápido
// Criar elemento e adicionar ao DOM
function adicionarItem(texto) {
const li = document.createElement('li');
li.textContent = texto;
li.addEventListener('click', () => {
li.classList.toggle('concluido');
});
document.querySelector('#lista')
.appendChild(li);
}
adicionarItem('Estudar HTML');
Semana 8 · Dados no browser
Tópicos
Atividades
Exemplo Rápido
// Salvar e recuperar do localStorage
const usuario = {
nome: 'Ana',
email: 'ana@email.com'
};
// Salvar (converte para string)
localStorage.setItem(
'usuario',
JSON.stringify(usuario)
);
// Recuperar (converte de volta)
const salvo = JSON.parse(
localStorage.getItem('usuario')
);
console.log(salvo.nome); // 'Ana'
Semana 9 · Backend simulado
Tópicos
Atividades
Semana 10 · Comunicação com servidores
Tópicos
Atividades
Exemplo Rápido
// async/await com tratamento
async function carregarDados() {
const loading = document
.getElementById('loading');
loading.style.display = 'block';
try {
const r = await fetch(
'/api/contatos'
);
if (!r.ok) throw new Error(r.status);
const dados = await r.json();
renderizar(dados);
} catch (e) {
mostrarErro(e.message);
} finally {
loading.style.display = 'none';
}
}
Semana 11 · Login e sessão
Tópicos
Atividades
Semana 12 · Mapas, gráficos e dados públicos
Tópicos
Atividades
Semanas 13–16 · Consolidação e apresentação
Requisitos Mínimos do Projeto
Cronograma