Aula 08 – Projeto Prático I (Task Manager) 📋
Chegou a hora de consolidar tudo o que aprendemos nos Módulos 1 e 2. Vamos construir uma aplicação de Gerenciamento de Tarefas (Task Manager) aplicando componentização, reatividade, props e emits.
🎯 Escopo do Projeto
Nossa aplicação permitirá: 1. Adicionar novas tarefas. 2. Listar tarefas existentes. 3. Marcar tarefas como concluídas. 4. Remover tarefas. 5. Visualizar o progresso (contador de tarefas).
🏗️ Estrutura de Componentes
Para uma organização profissional, vamos dividir o projeto assim:
App.vue: Gerencia o estado global (a lista de tarefas).FormTarefa.vue: Componente para entrada de dados.ListaTarefas.vue: Renderiza a lista de itens.ItemTarefa.vue: Exibe uma única tarefa com ações de remover/concluir.
graph TD
App[App.vue - Estado Global]
App --> Form[FormTarefa.vue - Input]
App --> Lista[ListaTarefas.vue - Listagem]
Lista --> Item[ItemTarefa.vue - Detalhe]
💻 Implementação Passo a Passo
# 1. Crie os arquivos vazios na pasta components
$ touch src/components/FormTarefa.vue
$ touch src/components/ItemTarefa.vue
# 2. Foque na lógica do App.vue
# Use ref para a lista de tarefas: const tarefas = ref([])
# 3. Implemente a comunicação
# FormTarefa EMITE 'adicionar' -> App.vue
# App.vue passa PROPS -> ListaTarefas -> ItemTarefa
💡 Dicas de Implementação
ID Único
Ao adicionar uma tarefa, use Date.now() como ID para gerar valores únicos para a :key do v-for.
Persistência Local (Bônus)
Tente usar o localStorage dentro do hook onMounted para carregar as tarefas salvas e um watch para salvar sempre que a lista mudar!
🎨 Desafio Visual
Utilize o que aprendeu sobre CSS Scoped para:
* Riscar o texto da tarefa quando estiver concluída (text-decoration: line-through).
* Mudar a cor de fundo do botão "Remover" para vermelho.
📝 Checkpoint de Entrega
Ao final desta aula, o aluno deve ter uma pasta src/ organizada, sem erros no console do navegador e com a reatividade funcionando plenamente entre os 4 componentes criados.
🚀 Próxima Aula: Vamos sair da página única e aprender a criar múltiplas rotas com o Vue Router!