13 Projeto Final Integrador
Neste capítulo, você vai aplicar os principais conceitos do livro em um projeto completo.
13.1 Objetivo do projeto
Desenvolver um sistema de cadastro e organização de tarefas escolares.
13.2 Funcionalidades obrigatórias
- Cadastrar tarefa com título e prazo.
- Marcar tarefa como concluída.
- Excluir tarefa.
- Salvar dados em
localStorage. - Organizar código em funções e, se possível, módulos.
13.3 Funcionalidades recomendadas
- Filtro por status (todas, pendentes, concluídas).
- Busca por texto.
- Contador de tarefas concluídas e pendentes.
- Validação de formulário.
13.4 Estrutura sugerida
projeto/
index.html
style.css
app.js
Versão modular:
projeto/
index.html
style.css
src/
app.js
storage.js
tarefas.js
ui.js
13.5 Modelo da tarefa
const tarefa = {
id: Date.now(),
titulo: "Estudar JavaScript",
prazo: "2026-03-01",
concluida: false
};13.6 Etapa 1: interface base
Campos mínimos:
- input de título;
- input de prazo;
- botão de salvar;
- lista de tarefas.
13.7 Etapa 2: estado da aplicação
let tarefas = [];13.8 Etapa 3: criar tarefas
function criarTarefa(titulo, prazo) {
return {
id: Date.now(),
titulo,
prazo,
concluida: false
};
}13.9 Etapa 4: renderizar lista
function renderizarTarefas(lista) {
console.log("Renderizar", lista);
}Depois substitua o console.log pela renderização real no DOM.
13.10 Etapa 5: concluir e remover
function alternarConclusao(id) {
tarefas = tarefas.map((t) =>
t.id === id ? { ...t, concluida: !t.concluida } : t
);
}
function removerTarefa(id) {
tarefas = tarefas.filter((t) => t.id !== id);
}13.11 Etapa 6: persistência
function salvarNoStorage() {
localStorage.setItem("tarefas", JSON.stringify(tarefas));
}
function carregarDoStorage() {
const dados = localStorage.getItem("tarefas");
tarefas = dados ? JSON.parse(dados) : [];
}13.12 Etapa 7: validação
function validarFormulario(titulo, prazo) {
if (!titulo.trim()) return "Informe o título da tarefa";
if (!prazo) return "Informe o prazo";
return null;
}13.13 Roteiro de implementação
- Montar HTML e CSS.
- Implementar criação de tarefa.
- Renderizar no DOM.
- Implementar concluir/remover.
- Integrar
localStorage. - Adicionar filtros e busca.
- Revisar e testar.
13.14 Critérios de avaliação
- funcionamento correto (40%);
- organização e legibilidade (25%);
- uso de boas práticas (15%);
- interface e experiência do usuário (10%);
- documentação do projeto (10%).
13.15 Desafios extras
- Ordenar por prazo.
- Destacar tarefas atrasadas automaticamente.
- Exportar tarefas em JSON.
- Criar modo escuro com botão de alternância.
13.16 Entrega sugerida
- Repositório com código fonte.
README.mdcom instruções de uso.- Capturas de tela da aplicação.
- Lista de melhorias futuras.