Skip to content

luizhanauer/timer

Repository files navigation

Timer Logo

⏳ Timer (PWA)

Um PWA minimalista de Temporizador e Cronômetro com estética Dark Neon.
Construído com foco em performance, acessibilidade mobile e design limpo.

Vue.js TypeScript Tailwind CSS Vitest PWA


✨ Funcionalidades Principais

  • ⏱️ Temporizador Dinâmico: Gráfico de rosca SVG reativo com animação orbital fluida.
  • ⏱️ Cronômetro de Precisão: Cálculo baseado em timestamps absolutos, garantindo precisão mesmo com o app em background.
  • 🎨 Tema "Dark Neon" Customizável: Altere a cor de destaque principal, refletindo instantaneamente em botões, sombras, gráficos e até no favicon da guia do navegador.
  • 🎹 Sintetizador de Áudio Nativo: Alarme totalmente gerado via Web Audio API. Personalize o tipo de onda (Sine, Square, Triangle, Sawtooth), frequência (Hz), duração e repetições.
  • 📱 Mobile-First & PWA: Navegação por Segmented Controls (nativo e intuitivo), prompt customizado de instalação offline e suporte a Service Workers.
  • 🚀 Atalhos de Produtividade: Botões de incremento rápido (+30s, +1m, +5m) que recalculam dinamicamente a proporção do gráfico.

🛠️ Stack Tecnológica & Arquitetura

Este projeto foi desenvolvido seguindo as melhores práticas de Engenharia de Software:

  • Clean Architecture & DDD: Separação clara entre Domínio (Regras), Aplicação (Serviços/Web APIs) e UI (Componentes).
  • TypeScript Strict Mode: Tipagem rigorosa em toda a base de código.
  • Object Calisthenics: Código limpo, sem blocos else, métodos curtos e responsabilidades únicas.
  • Test-Driven: Cobertura de testes unitários e de integração utilizando Vitest e jsdom.

📂 Estrutura de Diretórios

src/
├── core/                # Regras de Negócio e Serviços Externos (Web Audio, Notifications)
├── shared/              # Recursos partilhados (Store, Composables de Tempo, PWA)
├── components/          # Componentes visuais UI (Botões Neon, Gráficos SVG)
├── App.vue              # Orquestrador principal da UI
└── main.ts              # Ponto de entrada

🚀 Como Executar Localmente

Pré-requisitos: Node.js v18+

  1. Clone este repositório:
git clone https://github.com/luizhanauer/timer.git
  1. Acesse a pasta do projeto:
cd timer
  1. Instale as dependências:
npm install
  1. Inicie o servidor de desenvolvimento:
npm run dev

🧪 Testes Automatizados

O projeto conta com uma suíte de testes robusta cobrindo formatação de tempo, gerência de estado e mock de Web APIs.

Para rodar os testes uma vez:

npm run test

Para gerar o relatório de cobertura (Coverage):

npm run test:coverage

Contribuição

Contribuições são bem-vindas! Se você encontrar algum problema ou tiver sugestões para melhorar a aplicação, sinta-se à vontade para abrir uma issue ou enviar um pull request.

Se você gostou do meu trabalho e quer me agradecer, você pode me pagar um café :)

Buy Me A Coffee

Licença

Este projeto está licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter mais informações.

Desenvolvido com ☕ e código limpo.

About

⏳ Um PWA minimalista de Temporizador e Cronômetro com estética Dark Neon. Desenvolvido com Vue 3, Tailwind 4 e alarmes sintéticos customizáveis via Web Audio API.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors