auxilioDev (Gestor de Auxílios)
Aplicação web front-end (HTML/CSS/JS puro) para registrar, visualizar, filtrar e editar auxílios por pessoa, com persistência em arquivo CSV.
O app funciona em dois modos:
- Conectado: usa File System Access API para ler/gravar diretamente um CSV escolhido pelo usuário.
- Fallback: quando a API não está disponível, permite importar/exportar CSV manualmente.
- Cadastro de auxílio com:
- Nome da pessoa
- Data
- Duração (normalizada para minutos)
- Reaproveitamento de pessoa existente por nome normalizado (case-insensitive, sem acento e com espaços normalizados).
- Edição e exclusão de auxílios.
- Dashboard diário com KPIs (total de minutos, pessoas distintas e total de auxílios).
- Gráfico por pessoa (dia selecionado ou histórico completo).
- Tabela com filtros por pessoa, nome, data e ordenação.
- Persistência em CSV com cabeçalho validado.
- Reconexão automática do arquivo CSV quando possível.
- HTML5
- CSS3
- JavaScript (Vanilla)
- File System Access API (quando suportada)
- IndexedDB (armazenamento do handle do arquivo)
- Clone/baixe este repositório.
- Abra o arquivo
index.htmlno navegador. - Use a interface normalmente.
Não há backend e não há etapa de build.
Quando o navegador suporta File System Access API:
- Clique em Conectar CSV.
- Selecione (ou crie) um arquivo
.csv. - O app passa para modo conectado e salva o file handle no IndexedDB.
- Nas próximas aberturas, o app tenta reconectar automaticamente ao mesmo arquivo, pedindo permissão quando necessário.
- Alterações nas auxílios são persistidas no arquivo conectado.
Quando a File System Access API não está disponível (ou se você preferir fluxo manual):
- Clique em Importar CSV para carregar dados de um arquivo local.
- Trabalhe normalmente (inclusão/edição/exclusão).
- Clique em Exportar CSV para baixar o CSV atualizado.
Nesse modo, a persistência depende da ação manual de exportar.
index.html— estrutura da interface.styles.css— estilos da aplicação.app.js— regras de negócio, estado, renderização, CSV e persistência local.README.md— documentação do projeto.
O CSV deve usar exatamente este cabeçalho (mesma ordem):
occurrenceId,personId,personName,date,durationMinutes,createdAt,updatedAtoccurrenceId: identificador único da auxílio.personId: identificador da pessoa (ex.:P0001).personName: nome exibido da pessoa.date: data da auxílio (formatoYYYY-MM-DD).durationMinutes: duração persistida em minutos inteiros.createdAt: timestamp ISO de criação.updatedAt: timestamp ISO da última atualização.
Para identificar se uma pessoa já existe, o nome é normalizado com as seguintes regras:
trim(remove espaços nas extremidades)- conversão para minúsculas
- remoção de acentos/diacríticos
- colapso de espaços múltiplos para espaço único
Exemplos equivalentes:
"João Silva","joao silva","JOÃO SILVA"→ mesma pessoa
Entradas aceitas e valor salvo em durationMinutes:
90→901:30→9001:05→652h→1202h 15m→1350:45→45
Validações importantes:
0ou0h 0m→ inválido (duração deve ser maior que zero)1:75→ inválido (minutos emh:mmdevem ser00..59)- formato inválido (ex.:
abc) → erro orientando formatos aceitos (90,1:30,1h 30m)
- Sem backend: todo processamento é no cliente.
- Persistência principal depende de recursos do navegador.
- A conexão direta com arquivo requer suporte à File System Access API.
- Em navegadores sem suporte, é necessário usar import/export manual.
- Testes automatizados (unitários para parser/normalização e integração de fluxo CSV).
- Suporte a mais formatos de importação (ex.: JSON).
- Histórico de auditoria de alterações.
- Indicadores e gráficos adicionais.
- PWA/offline aprimorado.
Este projeto está licenciado sob a licença MIT.