FADA
Gestão de ponto e jornada: painel administrativo e o PWA "Bate o Botão", de registro de ponto com reconhecimento facial, GPS e antifraude.
Visão geral
FADA é um sistema de gestão de ponto e jornada. Ele tem um painel administrativo e o PWA "Bate o Botão", que permite ao colaborador registrar o ponto com reconhecimento facial, localização por GPS e verificações antifraude.
A aplicação é escrita em PHP puro no padrão front controller (um único ponto de entrada em public/index.php), e a análise facial fica em um serviço interno em Node, acessível apenas localmente.
Tecnologias
- PHP
- JavaScript
- PWA
- Node.js
- TensorFlow.js
- SQLite
- MySQL
Funcionalidades
- PWA com relógio oficial do servidor, próxima batida, horas trabalhadas no dia e batidas em revisão.
- Captura facial com orientação de enquadramento e iluminação e etapas de desafio.
- Registro supervisionado como alternativa quando a biometria ou as permissões falham.
- Geolocalização: estimativa da distância até a área de trabalho no aparelho, com a validação oficial sempre no servidor.
- Espelho mensal de batidas, com horas por dia e filtros por status.
- Perfil com cadastro, atualização e revogação de consentimento da biometria (LGPD) e escolha de tema.
- Tela "Controle de Batidas" para gestor e admin, com API real e login; papéis colaborador < gestor < admin.
Arquitetura
Toda requisição entra por public/index.php, que carrega o bootstrap, monta as rotas, executa os middlewares e chama o controller. Apenas a pasta public/ fica exposta; código, configuração, banco e chaves ficam fora dela.
- Núcleo próprio (App, Router, Request, Response, View, Container) e o domínio sob o namespace Ponto.
- Domínio dividido por responsabilidade: Identity (biometria), Location (geocerca), Antifraud (sinais de risco), Punch (batida), Audit e Admin.
- Middlewares de HTTPS, sessão, CSRF e autenticação por papel; limiares de biometria e de batida em arquivos de configuração.
- CLI bin/ponto para migrate, keygen, criação de usuários e de geocercas, verificação da auditoria e health check.
Biometria e antifraude
O reconhecimento facial roda em um serviço Node separado, que escuta só em 127.0.0.1 e é autenticado por HMAC. O provedor biométrico é registrado em um único ponto do contêiner, o que permite trocá-lo sem mexer no resto da aplicação.
- Serviço Node com TensorFlow.js e face-api para detecção, landmarks e descritor facial.
- Verificações de qualidade e de vivacidade (liveness) na captura.
- Motor de risco que combina sinais de dispositivo e de localização; a decisão final é sempre do servidor.
Segurança e LGPD
O projeto foi pensado com privacidade e integridade dos dados em mente, tratando o registro de ponto como informação sensível.
- Criptografia com libsodium e senhas em argon2id, com bloqueio após tentativas.
- Log de auditoria append-only, encadeado por hash, com verificação pela CLI.
- Gestão de consentimento da biometria e política de retenção de dados.
Screenshots
Desenvolvimento e desafios
A aplicação roda em PHP 8.1 ou superior, com SQLite no desenvolvimento e MySQL em produção, e migrations versionadas. Há testes de unidade e de integração HTTP no backend, além dos testes próprios do serviço de biometria em Node.
Conclusão
FADA mostra um registro de ponto moderno construído sem framework de aplicação: front controller em PHP puro, PWA instalável, biometria facial em um serviço isolado e um conjunto de camadas de segurança e antifraude, sempre com a decisão final no servidor.
Projetos relacionados
Currencee
Aplicação web de conversão de moedas em tempo real, com suporte a mais de 160 moedas, interface moderna e responsiva.
FutureData
Sistema de gestão para assistência técnica: ordens de serviço de ponta a ponta, portal do cliente e atendimento automatizado por WhatsApp com IA.