Documentação Técnica de Implementação e Infraestrutura
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.
O ambiente é orquestrado via docker-compose, garantindo isolamento e facilidade de backup.
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
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])
}
O sistema foi desenhado para rodar localmente e ser acessado via VPN (Wireguard/Netbird). O acesso administrativo é protegido por tokens JWT.
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