Um gerenciador de tarefas moderno construído com React, TypeScript e Vite, oferecendo visualizações em Kanban Board e Flow Chart para organização eficiente de projetos e tarefas.
- 🎯 Kanban Board: Interface drag-and-drop para gerenciamento visual de tarefas
- 🔄 Flow View: Visualização de dependências entre tarefas em formato de fluxograma
- 🌓 Tema Dark/Light: Alternância entre temas claro e escuro
- 💾 Persistência Local: Dados salvos automaticamente no localStorage
- 📱 Responsivo: Interface adaptável para desktop e mobile
- Node.js (versão 18 ou superior)
- pnpm (recomendado) ou npm
- Clone o repositório:
git clone <url-do-repositorio>
cd task-manager- Instale as dependências:
pnpm install
# ou
npm install- Execute o projeto em modo de desenvolvimento:
pnpm dev
# ou
npm run dev- Acesse a aplicação:
- Abra http://localhost:5173 no seu navegador
pnpm dev- Executa o projeto em modo de desenvolvimentopnpm build- Gera build de produçãopnpm preview- Visualiza o build de produçãopnpm test- Executa os testespnpm test:ui- Executa os testes com interface visualpnpm lint- Executa o linterpnpm type-check- Verifica tipos TypeScript
- React 19 - Biblioteca para interfaces de usuário
- TypeScript - Tipagem estática
- Vite - Bundler e dev server
- Tailwind CSS - Framework CSS utilitário
- Zustand - Gerenciamento de estado global
- @xyflow/react - Renderização de fluxogramas interativos
- @dnd-kit - Funcionalidade drag-and-drop
- @radix-ui - Componentes acessíveis de baixo nível
- Lucide React - Biblioteca de ícones
- React Router - Roteamento
- Vitest - Framework de testes
- Testing Library - Utilitários para testes de componentes
- ESLint - Linter para qualidade de código
src/
├── components/ # Componentes React
│ ├── ui/ # Componentes de interface base
│ ├── __tests__/ # Testes de componentes
│ ├── flow-view.tsx # Visualização em fluxograma
│ ├── kaban-board.tsx # Board Kanban
│ ├── kaban-card.tsx # Card de tarefa
│ ├── kaban-column.tsx # Coluna do Kanban
│ ├── header.tsx # Cabeçalho da aplicação
│ ├── modal.tsx # Modal responsivo
│ └── theme-*.tsx # Componentes de tema
├── hooks/ # Custom hooks
├── lib/ # Utilitários e helpers
├── pages/ # Páginas da aplicação
├── store/ # Gerenciamento de estado (Zustand)
├── types.ts # Definições de tipos TypeScript
└── main.tsx # Ponto de entrada da aplicação
- Por quê: Alternativa mais leve ao Redux, com menos boilerplate
- Benefícios: API simples, TypeScript nativo, persistência automática
- Implementação: Store único para tarefas com persistência no localStorage
- Por quê: Produtividade e consistência no design
- Benefícios: Classes utilitárias, purge automático, tema customizável
- Configuração: Tema personalizado com variáveis CSS para dark/light mode
- Por quê: Melhor performance e acessibilidade comparado ao react-beautiful-dnd
- Benefícios: Suporte a keyboard, touch devices, melhor TypeScript
- Uso: Implementado no Kanban Board para reordenação de tarefas e colunas
- Por quê: Biblioteca especializada em grafos e fluxogramas
- Benefícios: Performance otimizada, customização avançada, interatividade
- Implementação: Visualização de dependências entre tarefas
- Por quê: Componentes acessíveis e sem estilo predefinido
- Benefícios: WAI-ARIA compliant, composição flexível, TypeScript
- Uso: Base para Modal, Dropdown, Dialog, etc.
- Por quê: Padrão da comunidade React
- Implementação: Configuração simples com redirecionamentos
- Por quê: Compatibilidade nativa com Vite, performance superior ao Jest
- Configuração:
- Ambiente jsdom para testes de componentes
- Mocks para APIs do navegador (ResizeObserver, matchMedia)
- Setup global para Testing Library
- Configuração: Tipagem rigorosa para maior segurança
- Benefícios: Detecção precoce de erros, melhor DX
- Estratégia: Mobile-first com breakpoints Tailwind
- Implementação:
- Modal/Drawer adaptativo baseado no tamanho da tela
- Layout flexível para diferentes dispositivos
- React.memo: Componentes otimizados para re-renderizações
- useMemo/useCallback: Otimização de cálculos pesados
O projeto inclui testes unitários para componentes principais:
# Executar todos os testes
pnpm test
# Executar testes com interface visual
pnpm test:ui
# Executar testes em modo watch
pnpm test --watch- ✅ Componentes de interface
- ✅ Funcionalidades do Kanban Board
- ✅ Renderização de páginas
- ✅ Mocks para APIs do navegador
- Navegadores: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
- Dispositivos: Desktop, Tablet, Mobile
- Resolução: Responsivo a partir de 320px
Desenvolvido com ❤️ usando React + TypeScript + Vite