Aplicacao Pomodoro feita com Angular 16 que combina controle de tempo com gerenciamento simples de metas armazenadas no navegador.
- Ciclo completo de Pomodoro com modos Trabalho, Pausa curta e Pausa longa.
- Controles de iniciar, pausar, reiniciar e pular o cronometro com feedback sonoro.
- Lista de metas com contagem de atos concluidos, edicao inline e filtro de concluido.
- Persistencia local usando
localStorage, o que preserva dados mesmo apos recarregar. - Interface responsiva com Tailwind CSS, icones do pacote
@ng-iconse tooltipsngx-tippy. - Empacotamento opcional em Electron para gerar uma versao desktop (Windows, macOS, Linux).
- Angular 16, RxJS e arquitetura baseada em servicos.
- Tailwind CSS + Tippy.js para estilizacao e dicas de interface.
@ng-icons/bootstrap-iconspara icones vetoriais.- LocalStorage do navegador para dados de metas e Web Audio API basica para sons.
- Electron 27 para empacotar a aplicacao web em um executavel desktop.
- Node.js 16.14 ou superior (18 LTS recomendado).
- npm 8 ou superior.
npm installnpm run startO script executa ng serve e ng test em paralelo. Caso deseje apenas o servidor web, execute:
npx ng serveO aplicativo ficara disponivel em http://localhost:4200/ com recarga automatica ao salvar arquivos.
npm testExecuta os testes unitarios via Karma + Jasmine em modo watch. Para um unico disparo use ng test --watch=false.
npm run buildOs arquivos otimizados sao gerados em dist/o-pomodoro/.
npm run electronO comando realiza o build Angular e abre a janela Electron apontando para os arquivos de producao. O icone padrao esta em src/assets/logo.png.
src/
app/
pages/home/ # Layout principal com cronometro e lista de metas
services/ # Servicos reutilizaveis (timer, tipos, metas, audio)
assets/
sounds/ # Efeitos sonoros de clique e alarme
styles.sass # Importa Tailwind e estilos globais
main.js # Ponto de entrada do Electron
TimerServicemantem o contador em segundos, controla o estado (rodando/parado) e reinicia o ciclo.TimerTypeServicetroca entre os modos Trabalho, Pausa curta e Pausa longa a cada ciclo concluido.CronAreaComponentexibe o tempo restante e consome atualizacoes dos servicos.ToggleButtonComponentalterna manualmente o tipo de timer, enquantoTimerControlComponentoferece botoes de play, pause, reset e skip.
ListControllServicegrava, atualiza e remove metas nolocalStorage, expondo umSubjectpara que a interface reaja em tempo real.AddUpdateGoalItemComponentcria novas metas ou edita existentes, incluindo contagem de atos necessarios.GoalItemComponentalterna o estado de conclusao e aciona a edicao inline.- O botao flutuante em
HomeComponentremove todas as metas marcadas como concluidas.
Os sons de clique (click1-4.wav) e o alarme (ClockOver.wav) estao em src/assets/sounds/ e sao reproduzidos pelo AudioService para reforcar interacoes e avisar o fim de cada ciclo.
- Os rotulos dos botoes em
ToggleButtonComponentapresentam caracteres estranhos; revisar a codificacao do arquivo HTML pode corrigir o texto exibido. - Validacoes de formulario podem ser expandidas (ex.: limitar numeros negativos ou zerados para atos).
- Considere adicionar notificacoes do sistema ou integracao com a API de Vibration para navegadores suportados.