Aplicativo web de gerenciamento de tarefas desenvolvido com React, TypeScript e Tailwind CSS.
- CRUD completo de tarefas - Criar, visualizar, editar e excluir tarefas
- Sistema de status - Pendente, Em Progresso, Concluída, Cancelada
- Prioridades - Baixa, Média, Alta, Urgente
- Datas de vencimento - Controle de prazos com alertas de vencimento
- Sistema de tags - Organização por etiquetas personalizáveis
- Busca e filtros - Encontre tarefas rapidamente por diversos critérios
- Ordenação - Organize tarefas por data, prioridade, título, etc.
- Dashboard - Visão geral com estatísticas e tarefas recentes
- Persistência local - Dados salvos no navegador (LocalStorage)
- Interface responsiva - Funciona perfeitamente em desktop, tablet e mobile
- SPA (Single Page Application) - Navegação fluida sem recarregar a página
- React 18 - Biblioteca principal para construção da interface
- TypeScript - Tipagem estática para maior segurança e produtividade
- React Router - Roteamento para navegação SPA
- Tailwind CSS - Framework CSS utilitário para estilização
- Vite - Build tool moderno e rápido
- date-fns - Biblioteca para manipulação de datas
- UUID - Geração de identificadores únicos
- clsx - Utilitário para manipulação de classes CSS
- Cypress - Framework de testes end-to-end e de componentes
src/
├── components/ # Componentes reutilizáveis
│ ├── ui/ # Componentes de UI básicos (Button, Input, etc.)
│ ├── Layout.tsx # Layout principal da aplicação
│ ├── TaskCard.tsx # Card para exibição de tarefas
│ └── TaskForm.tsx # Formulário de criação/edição
├── contexts/ # Context API para estado global
│ └── TaskContext.tsx
├── hooks/ # Hooks customizados
│ └── useTasks.ts
├── pages/ # Páginas da aplicação
│ ├── Dashboard.tsx
│ ├── TaskList.tsx
│ ├── TaskDetail.tsx
│ └── TaskForm.tsx
├── types/ # Definições de tipos TypeScript
│ └── index.ts
├── utils/ # Utilitários diversos
├── App.tsx # Componente raiz
├── AppRouter.tsx # Configuração de rotas
├── main.tsx # Ponto de entrada da aplicação
└── index.css # Estilos globais
-
Clone o repositório
git clone <url-do-repositorio> cd task-manager
-
Instale as dependências
npm install
-
Execute o servidor de desenvolvimento
npm run dev
-
Abra no navegador
- Acesse
http://localhost:5173
- Acesse
- Clique em "Nova Tarefa" no header ou dashboard
- Preencha o título e descrição
- Selecione a prioridade
- Defina uma data de vencimento (opcional)
- Adicione tags separadas por vírgula (opcional)
- Clique em "Criar"
- Visualizar: Clique em "Ver Detalhes" em qualquer tarefa
- Editar: Clique em "Editar" na página de detalhes
- Alterar Status: Use os botões de ação rápida nos cards
- Excluir: Clique em "Excluir" e confirme a ação
- Use a barra de busca para encontrar tarefas por título, descrição ou tags
- Filtre por status e prioridade usando os selects
- Ordene as tarefas por diferentes critérios
- Pendente: Amarelo
- Em Progresso: Azul
- Concluída: Verde
- Cancelada: Vermelho
- Baixa: Cinza
- Média: Amarelo
- Alta: Laranja
- Urgente: Vermelho
O projeto utiliza Cypress para testes end-to-end (E2E) e testes de componentes.
# Abrir interface interativa do Cypress
npm run cypress:open
# Executar testes E2E em modo headless
npm run test:e2e
# ou
npm run cypress:run:e2e# Executar testes de componentes em modo headless
npm run test:component
# ou
npm run cypress:run:component# Executa todos os testes (E2E + Componentes)
npm run cypress:runcypress/
├── e2e/ # Testes end-to-end
├── component/ # Testes de componentes
├── fixtures/ # Dados de teste
├── support/ # Comandos e configurações customizadas
└── tsconfig.json # Configuração TypeScript para Cypress
- Testes E2E: Testam o fluxo completo da aplicação, desde a navegação até as interações do usuário
- Testes de Componentes: Testam componentes isolados, verificando renderização, props e interações
npm run dev- Inicia o servidor de desenvolvimentonpm run build- Gera build de produçãonpm run preview- Visualiza o build de produçãonpm run lint- Executa o linternpm run cypress:open- Abre a interface do Cypressnpm run cypress:run- Executa todos os testes em modo headlessnpm run test:e2e- Executa apenas testes E2Enpm run test:component- Executa apenas testes de componentes
interface Task {
id: string;
title: string;
description: string;
status: 'pending' | 'in-progress' | 'completed' | 'cancelled';
priority: 'low' | 'medium' | 'high' | 'urgent';
dueDate?: Date;
createdAt: Date;
updatedAt: Date;
tags?: string[];
}