Aplicação web de produtividade baseada na técnica Pomodoro, com foco em ciclos de trabalho/descanso, histórico de tarefas e configuração de tempos personalizados. Aplicação desenvolvida junto ao curso avançado de React do Luiz Otávio Miranda
- Início de tarefas com cronômetro regressivo em tempo real.
- Interrupção e conclusão automática de tarefas com atualização de status.
- Ciclos automáticos de foco, descanso curto e descanso longo.
- Histórico com ordenação (tarefa, duração, data) e limpeza completa.
- Configurações personalizáveis para tempos de foco e pausas.
- Persistência em
localStoragepara manter dados entre sessões. - Feedback visual/mensagens de ação (toasts e confirmações).
- Ciclos ímpares: foco.
- Ciclos pares: descanso curto.
- A cada 8º ciclo: descanso longo.
Os tempos padrão são:
- Foco:
25min - Descanso curto:
5min - Descanso longo:
15min
React 19TypeScriptViteReact Routerdate-fnsreact-toastifylucide-react
/→ tela principal com cronômetro e formulário de tarefa/history→ histórico de tarefas/settings→ configurações dos tempos/about-pomodoro→ explicação da técnica Pomodoro
- Node.js (recomendado versão
20+) - npm
npm installnpm run devnpm run buildnpm run previewnpm run lintsrc/
components/ # Componentes reutilizáveis (UI, formulário, contador etc.)
contexts/ # Estado global e reducer das tarefas
pages/ # Páginas da aplicação
routers/ # Configuração de rotas
templates/ # Estruturas de layout
utils/ # Funções utilitárias
workers/ # Web Worker para controle do timer
O cronômetro usa um Web Worker para manter a contagem regressiva desacoplada da UI. Ao finalizar uma tarefa, o app registra conclusão no histórico e toca um aviso sonoro.
- O estado é salvo em
localStoragecom a chavestate. - Ao recarregar a página, não existe tarefa ativa em andamento; o app restaura o histórico e configurações salvas.