Aplicativo To‑Do simples, porém completo, construído com HTML, CSS e JavaScript sem dependências externas.
- ✅ CRUD de tarefas (criar, editar, excluir, concluir)
- 🔎 Busca e filtros (categoria, status, prioridade)
- 🧭 Ordenação (criação, prazo, prioridade, título)
- 🌓 Tema claro/escuro (respeita
prefers-color-scheme
+ persistência) - 💾 Persistência local (LocalStorage)
- 🔄 Exportar/Importar em JSON
- ♿ Acessibilidade (semântica, foco visível,
aria-live
) - ⌨️ Atalhos de teclado
Basta abrir index.html
no navegador. Não há dependências.
todo-plus/
index.html
assets/
css/ (reset, variables, main, components)
js/ (app, storage, state, dom, utils, keyboard)
img/icons/
README.md
LICENSE
t
Alternar tema?
ou/
Abrir ajuda/
ouCtrl + K
Focar buscaCtrl + Enter
Adicionar tarefaAlt + E
Exportar JSONAlt + I
Importar JSON
- Adicione uma tarefa com título e opcionalmente categoria/prioridade/prazo.
- Marque como concluída e verifique a atualização dos contadores.
- Edite uma tarefa (título, categoria, prioridade, prazo) e confirme a atualização.
- Exclua uma tarefa e verifique se saiu da lista e dos contadores.
- Digite um termo em Buscar e verifique o filtro em tempo real.
- Aplique Categoria/Status/Prioridade e observe a lista.
- Altere Ordenar por para
Prazo
, depoisPrioridade
, depoisTítulo
e confirme a ordenação.
- Use
t
para alternar tema e recarregue a página: a preferência deve persistir. - Navegue via teclado (Tab/Shift+Tab) e confirme o foco visível.
- Verifique que a lista anuncia mudanças (atributo
aria-live
).
- Recarregue a página e confirme que as tarefas persistem (LocalStorage).
- Clique em Exportar (
Alt+E
) e baixe o JSON. - Edite o JSON e execute Importar (
Alt+I
). Teste Substituir e Mesclar.
- Tentar adicionar sem título → deve bloquear com aviso.
- Prazo vazio é aceito e exibido como Sem prazo.
- Importar arquivo inválido → deve exibir erro.
- Paleta de cores baseada na identidade da Villares (
#045494
,#d6e2ed
,#4a83b6
,#387db4
,#7caccc
). - Ajuste variáveis em
assets/css/variables.css
.
MIT — veja LICENSE
.