SaaS de Controle de Ponto e Folha

Documentação Técnica de Implementação e Infraestrutura

1. Visão Geral do Projeto

Este sistema é uma solução autohospedada (Self-hosted) para gestão de recursos humanos, focada em registro de ponto com geolocalização, banco de horas automatizado e cálculos de folha de pagamento.

Stack: Node.js, PostgreSQL, Docker, Prisma ORM, Tailwind CSS.

2. Estrutura de Infraestrutura (Docker)

O ambiente é orquestrado via docker-compose, garantindo isolamento e facilidade de backup.

docker-compose.yml

version: '3.8'
services:
  db:
    image: postgres:15-alpine
    container_name: ponto-db
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - ./data/db:/var/lib/postgresql/data
  app:
    build: ./app
    container_name: ponto-app
    ports:
      - "${PORT}:${PORT}"
    environment:
      DATABASE_URL: ${DATABASE_URL}
    depends_on:
      - db

3. Modelo de Dados (Prisma Schema)

Definição das entidades principais no banco de dados relacional.

model Funcionario {
  id              String   @id @default(uuid())
  nome            String
  cpf             String   @unique
  valorHora       Decimal  @default(0)
  bancoHoras      Int      @default(0)
  pontos          Ponto[]
}

model Ponto {
  id              String   @id @default(uuid())
  tipo            TipoPonto
  dataHora        DateTime @default(now())
  latitude        Float?
  longitude       Float?
  funcionario     Funcionario @relation(fields: [funcionarioId], references: [id])
}

4. Segurança e Backup

Acesso Remoto

O sistema foi desenhado para rodar localmente e ser acessado via VPN (Wireguard/Netbird). O acesso administrativo é protegido por tokens JWT.

Script de Backup Automatizado

Script para ser executado via CRON diariamente às 03:00 AM:

#!/bin/bash
BACKUP_DIR="./data/backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
docker exec ponto-db pg_dump -U admin ponto_saas | gzip > $BACKUP_DIR/ponto_$TIMESTAMP.sql.gz
find $BACKUP_DIR -type f -mtime +30 -delete

5. Funcionalidades de Negócio