Projeto Prático I: Task Manager 📝
Aula 08 - Construindo uma aplicação do zero
🎯 Objetivo do Projeto
- Aplicar tudo o que aprendemos no Módulo 1 e 2
- Criar um Gerenciador de Tarefas funcional e organizado
- Focar na componentização e comunicação
📋 Requisitos do App
- Adicionar novas tarefas
- Listar tarefas existentes
- Marcar tarefa como concluída (visual)
- Remover tarefas
- Persistir dados no LocalStorage
🏗️ Arquitetura de Componentes
App.vue: Orquestrador e dono do estado (lista)Header.vue: Título e brandingTaskForm.vue: Input e botão de cadastroTaskItem.vue: Card individual de cada tarefa
📊 Fluxo de Dados do Projeto
graph TD
App[App.vue - state: tasks] --> Form[TaskForm.vue]
App --> List[Lista de Itens]
Form -- Emit: create --> App
List -- v-for --> Item[TaskItem.vue]
Item -- Emit: delete --> App
Item -- Emit: toggle --> App 🧬 Definição da "Tarefa"
Cada item do array deve ser um objeto:
🛠️ Funcionalidade: Adicionar
v-modelno input doTaskForm- Botão dispara
emit('criar', nota) Appfaz um.push()no array reativo
🛠️ Funcionalidade: Remover
TaskItemtem botão com@click="emit('x', id)"Apprecebe ID e faz um.filter()para excluir o item
💾 Persistência com Watcher
- Como salvar SEMPRE que a lista mudar?
- Hook
watchdo Vue 3:
🔄 Carregando ao Abrir
- No
onMounted:
🎨 Estilização Dinâmica
- Como riscar o texto da tarefa concluída?
- A classe CSS
.riscadoaplica otext-decoration: line-through
🚀 Desafios Extras
- Adicionar contador de "Tarefas restantes"
- Botão para Limpar todas as tarefas concluídas
- Animações simples na entrada/saída de itens
🏛️ Boas Práticas
- Nomes de props claros
- Validação no
defineProps - Nomes de funções descritivos (
handleRemove,handleCreate)
🏁 Vamos Construir!
- Abram o VS Code
- Iniciem o servidor Vite
- Mãos à obra na estrutura de pastas
🏁 Dúvidas?
Bom projeto a todos! Este é o fim do Módulo 2. Parabéns!