Voltar para Dashboard
Sistema Corporativo · Monorepo

Bate Ponto

Sistema completo de marcação de ponto com geofencing, fluxo de aprovação e métricas em tempo real. Arquitetura em monorepo com NestJS + Next.js, preparado para times híbridos, home-office e presencial.

NestJS 11Next.js 15MongoDBBullMQRedisJWTZodTurborepoTailwind v4

Geofencing inteligente

Cada batida é validada por distância Haversine entre a coordenada do funcionário e a sede da empresa (raio padrão de 650m). Fora do raio? O ponto vira uma solicitação que entra na fila de aprovação do admin.

  • Política de geo adaptativa: presencial, home-office e híbrido.
  • Híbrido: configuração por dia da semana (em casa vs empresa).
  • Auditoria completa: distância, coordenadas e admin aprovador.
HaversineGPS650m radiusApproval Flow
marcacao.controller.tsPOST /marcacoes

const dist = haversine(user.coords, empresa);

if (dist <= RAIO_M) {

// Dentro do raio

registrarPonto(evento);

sendMail('confirmação');

} else {

// Fora do raio

criarSolicitacao({

evento, dist, lat, lng,

status: 'pendente'

});

}

Monorepo Turbo

Estrutura organizada em apps (api, web) e packages(shared, database, apuracao). Build distribuído com Turborepo, cache compartilhado e dependências entre pacotes.

bateponto/

├── apps/

│ ├── api/ (NestJS)

│ └── web/ (Next.js)

└── packages/

├── shared/

├── database/

└── apuracao/

Aprovação granular

Admin recebe solicitações pendentes com geolocalização + distância exata. Pode aprovar (vira marcação real) ou recusar com motivo. Tudo auditado com timestamps e responsável.

PendenteAprovadaRecusada

Segurança em camadas

JWT com Passport.js, bcrypt (12 rounds), Helmet, Throttler contra brute-force e troca de senha obrigatória no primeiro acesso. Decorators custom @Roles e @CurrentUser.

JWT Helmet Throttler

Métricas + relatórios

Cálculo de horas trabalhadas, almoço, extras e esperadas — por dia, semana e mês. Agregações por time. Exports nativos para PDF (pdf-lib) e Excel (exceljs).

Trabalhado 42h 18m
Esperado 40h 00m
Extras +2h 18m

Stack completa

Backend
  • NestJS 11
  • Mongoose 9
  • Zod + nestjs-zod
  • Passport JWT
Frontend
  • Next.js 15
  • Radix UI
  • React Hook Form
  • TanStack Query/Table
Infra
  • MongoDB
  • Redis + BullMQ
  • Turborepo
  • Yarn 4 workspaces
Integrações
  • Nodemailer (SMTP)
  • pdf-lib + exceljs
  • cep-promise
  • date-fns + tz

Módulos do sistema

Marcações

4 eventos/dia: entrada, almoço, retorno, saída.

Funcionários

CRUD com roles, jornada e modelo de trabalho.

Solicitações

Aprovação de pontos fora do raio.

Ajustes

Correções manuais de horas pelo admin.

Equipes

Métricas agregadas por time.

Notificações

Emails de boas-vindas e confirmação.

Auth

JWT + troca de senha obrigatória.

Observability

Logs estruturados + métricas.