Skip to content

About

Sistema web de registro de ponto eletrônico com geolocalização, comprovante em PDF e cálculo de jornada pela CLT. Next.js + Supabase.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

Repository files navigation

📍 checkPoint

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.

Demo Next.js React TypeScript Supabase Tailwind CSS

🔗 Acessar o projeto · 🚧 Em desenvolvimento


🎯 O problema

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.

✨ Funcionalidades

  • 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.

🧭 Como funciona a validação de localização

A validação acontece no banco de dados, não só no navegador:

  1. Cada empresa tem uma coordenada-base e um raio permitido (padrão de 100 m).
  2. Ao inserir uma marcação, um trigger do PostgreSQL calcula a distância até a base com a fórmula de Haversine.
  3. Se a distância passar do raio, a marcação é recusada com uma mensagem informando a distância calculada.

🧰 Stack

Á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

🗂️ Estrutura

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

🚀 Como rodar

git clone https://github.com/Vinny1313/checkpoint.git
cd checkpoint/web
npm install
  1. Crie um projeto no Supabase e aplique as migrations da pasta supabase/migrations, em ordem.
  2. Crie o arquivo web/.env.local:
NEXT_PUBLIC_SUPABASE_URL=https://SEU-PROJETO.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=sua-anon-key-aqui
  1. (Opcional) Rode o seed para criar uma empresa de teste:
node seed.mjs
  1. Inicie o servidor:
npm run dev

Acesse http://localhost:3000.

O .env.local não deve ser commitado. Nunca publique chaves reais.

🛣️ Roadmap

  • 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

About

Sistema web de registro de ponto eletrônico com geolocalização, comprovante em PDF e cálculo de jornada pela CLT. Next.js + Supabase.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages