Sistema web responsivo de registro de ponto eletrônico, com confirmação de presença por geolocalização,
comprovante em PDF e cálculo de jornada conforme a CLT.
🔗 Acessar o projeto · 🚧 Em desenvolvimento
Uma equipe de desenvolvimento registrava o ponto por um bot de Discord, com os dados enviados para um dashboard (nome, data, entrada, saída e observação). Esse modelo não permitia:
- confirmar a presença do colaborador;
- gerar o comprovante de cada registro;
- emitir o Espelho de Ponto e o AEJ.
O checkPoint nasce para resolver isso em um site responsivo, seguindo a legislação e as normas atuais de controle de ponto.
- Registro de ponto: entrada, saída, pausa e retorno, com NSR (Número Sequencial de Registro) gerado pelo banco.
- Confirmação de presença por geolocalização: cada marcação guarda latitude e longitude e é validada no banco por geofence.
- Comprovante em PDF: gerado a cada marcação, com hash SHA-256 dos dados.
- Cálculo de jornada: baseado na CLT (art. 58, § 1º), com tolerância de 10 minutos por dia (5 por marcação).
- Justificativas e atestados: envio de justificativa com documento anexo e fluxo de aprovação (pendente, aprovado, rejeitado).
- Painel do colaborador e painel administrativo.
- Login por matrícula e senha.
- Segurança em nível de linha (RLS): o colaborador acessa só os próprios dados, e o administrador, os da sua empresa.
A validação acontece no banco de dados, não só no navegador:
- Cada empresa tem uma coordenada-base e um raio permitido (padrão de 100 m).
- Ao inserir uma marcação, um trigger do PostgreSQL calcula a distância até a base com a fórmula de Haversine.
- Se a distância passar do raio, a marcação é recusada com uma mensagem informando a distância calculada.
| Área | Tecnologias |
|---|---|
| Frontend | Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS 4 |
| Backend | Supabase (Auth, PostgreSQL, RLS, funções e triggers) |
| Documentos | jsPDF (comprovantes) |
| Interface | lucide-react |
| Deploy | Vercel |
checkpoint/
├── supabase/migrations/ # schema, RLS e função de geofence
└── web/ # aplicação Next.js
├── src/app/ # páginas: login, dashboard, admin
├── src/lib/ # cálculos de jornada, comprovante e arquivos fiscais
└── seed.mjs # dados iniciais para testes
git clone https://github.com/Vinny1313/checkpoint.git
cd checkpoint/web
npm install- Crie um projeto no Supabase e aplique as migrations da pasta
supabase/migrations, em ordem. - Crie o arquivo
web/.env.local:
NEXT_PUBLIC_SUPABASE_URL=https://SEU-PROJETO.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=sua-anon-key-aqui- (Opcional) Rode o seed para criar uma empresa de teste:
node seed.mjs- Inicie o servidor:
npm run devAcesse http://localhost:3000.
O
.env.localnão deve ser commitado. Nunca publique chaves reais.
- Geração real dos arquivos fiscais AFD e AEJ (hoje, simulada com dados de exemplo)
- Espelho de Ponto mensal
- Jornadas com múltiplas pausas no cálculo diário
- Relatórios para o administrador
Feito por Vinicius Gomes