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

As screenshots deste projeto serão adicionadas em breve.

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.

Ver detalhes

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.

Ver detalhes Demo

VulnShop

Laboratório educacional de segurança web: um e-commerce intencionalmente vulnerável em PHP puro, com desafios guiados, código comentado e a versão corrigida de cada falha.

Ver detalhes Demo