Go to file
JuruSysadmin 4a03f79509 docs: adicionar documentação inicial do projeto 2026-01-07 17:42:45 -03:00
.gitea/workflows fix: update workflow name and format trigger for SSH deployment 2026-01-07 17:28:12 -03:00
src fix: correct typo in label for "Dias úteis" in Pagina component 2026-01-07 17:14:12 -03:00
.dockerignore feat: add Gitea CI/CD workflows for Docker and direct Next.js deployment, Renovate, Dockerfile, docker-compose, and .dockerignore. 2026-01-07 14:04:13 -03:00
.gitignore feat: Initialize Next.js project with Shadcn UI components, Tailwind CSS, and Oracle DB integration. 2026-01-07 12:29:06 -03:00
README.md docs: adicionar documentação inicial do projeto 2026-01-07 17:42:45 -03:00
algua.eslintrc.json feat: Initialize Next.js project with Shadcn UI components, Tailwind CSS, and Oracle DB integration. 2026-01-07 12:29:06 -03:00
components.json feat: Initialize Next.js project with Shadcn UI components, Tailwind CSS, and Oracle DB integration. 2026-01-07 12:29:06 -03:00
config.js feat: Add baldinho calendar page for delivery date and parameter management, and configure Renovate. 2026-01-07 12:56:14 -03:00
ecosystem.config.js refactor: simplify ecosystem configuration and update script paths 2026-01-07 17:17:37 -03:00
eslint.config.mjs feat: Initialize Next.js project with Shadcn UI components, Tailwind CSS, and Oracle DB integration. 2026-01-07 12:29:06 -03:00
next.config.mjs feat: Add Gitea CI/CD and PM2 deployment for Next.js standalone output, removing Docker files. 2026-01-07 14:55:42 -03:00
package-lock.json fix: correct typo in label for "Dias úteis" in Pagina component 2026-01-07 17:14:12 -03:00
package.json feat: Initialize Next.js project with Shadcn UI components, Tailwind CSS, and Oracle DB integration. 2026-01-07 12:29:06 -03:00
postcss.config.mjs feat: Initialize Next.js project with Shadcn UI components, Tailwind CSS, and Oracle DB integration. 2026-01-07 12:29:06 -03:00
renovate.json feat: Add baldinho calendar page for delivery date and parameter management, and configure Renovate. 2026-01-07 12:56:14 -03:00
tailwind.config.ts feat: Initialize Next.js project with Shadcn UI components, Tailwind CSS, and Oracle DB integration. 2026-01-07 12:29:06 -03:00
tsconfig.json feat: Add baldinho calendar page for delivery date and parameter management, and configure Renovate. 2026-01-07 12:56:14 -03:00

README.md

Portal Calendário Dias Rota

Sistema de gerenciamento de calendário de entregas com integração ao banco de dados Oracle, desenvolvido com Next.js 16 e TypeScript.

Descrição

O Portal Calendário Dias Rota é uma aplicação web que permite visualizar e gerenciar dias de entrega em um calendário interativo. O sistema oferece controle sobre capacidades de entrega, dias úteis e status de disponibilidade para cada data.

Funcionalidades Principais

  • Calendário Interativo: Visualização de datas com informações de entrega
  • Gestão de Capacidades: Configuração de capacidade de entrega por dia
  • Controle de Dias Úteis: Definição de quantidade de dias úteis para vendas
  • Status de Entrega: Ativação/desativação de entregas por data específica
  • Integração Oracle: Conexão direta com banco de dados Oracle usando pool de conexões
  • Interface Responsiva: Design moderno com Tailwind CSS e componentes Radix UI

Tecnologias

  • Framework: Next.js 16.1.1 (App Router)
  • Linguagem: TypeScript 5
  • Banco de Dados: Oracle Database (via node-oracledb 6.9.0)
  • Estilização: Tailwind CSS 3.4.1
  • UI Components:
    • Radix UI (Dialog, Popover, Label, Alert Dialog)
    • Lucide React (ícones)
    • Sonner (notificações toast)
  • Gerenciamento de Estado: Jotai 2.16.0
  • Utilitários:
    • date-fns 4.1.0 (manipulação de datas)
    • clsx + tailwind-merge (classes CSS)
    • class-variance-authority (variantes de componentes)

Estrutura do Projeto

portal-dias-rota/
├── src/
│   ├── app/
│   │   ├── dias-rota/          # Página principal do calendário
│   │   │   ├── page.tsx        # Server component
│   │   │   └── pagina.tsx      # Client component com lógica do calendário
│   │   ├── action/             # Server actions
│   │   ├── data-access/        # Camada de acesso a dados
│   │   └── globals.css         # Estilos globais
│   ├── components/
│   │   ├── kibo-ui/            # Componentes customizados do calendário
│   │   └── ui/                 # Componentes UI (shadcn/ui)
│   ├── db/
│   │   └── oracle.ts           # Configuração e pool de conexões Oracle
│   └── lib/                    # Utilitários
├── ecosystem.config.js         # Configuração PM2 para produção
├── next.config.mjs             # Configuração Next.js
├── tailwind.config.ts          # Configuração Tailwind CSS
└── package.json

Instalação

Pré-requisitos

  • Node.js 20+ instalado
  • Acesso a um banco de dados Oracle
  • Oracle Instant Client (opcional, para modo Thick)

Passos

  1. Clone o repositório:
git clone <url-do-repositorio>
cd portal-dias-rota
  1. Instale as dependências:
npm install
  1. Configure as variáveis de ambiente criando um arquivo .env:
# Configurações Oracle
ORACLE_USER=seu_usuario
ORACLE_PASSWORD=sua_senha
ORACLE_CONNECTION_STRING=host:porta/servico

# Pool de Conexões (opcional)
ORACLE_POOL_MIN=1
ORACLE_POOL_MAX=30
ORACLE_POOL_INCREMENT=1
ORACLE_QUEUE_TIMEOUT=60000
ORACLE_INACTIVITY_TIMEOUT=20000

# Oracle Thick Mode (opcional)
# ORACLE_LIB_DIR=/caminho/para/instantclient

Uso

Desenvolvimento

Execute o servidor de desenvolvimento:

npm run dev

Acesse http://localhost:3000 no navegador.

Produção

  1. Build da aplicação:
npm run build
  1. Inicie o servidor de produção:
npm start

O servidor rodará na porta 3003 (configurável em package.json).

Deploy com PM2

O projeto inclui configuração para PM2 (ecosystem.config.js):

pm2 start ecosystem.config.js

Funcionalidades do Calendário

Visualização de Dados

Cada dia no calendário exibe:

  • Capacidades: Capacidade total de entrega
  • Peso Venda: Peso disponível para venda
  • Disponível: Quantidade disponível para entrega

Configurações Globais

  • Capacidade: Define a capacidade padrão de entrega
  • Dias Úteis: Configura quantos dias úteis são considerados para vendas

Interação com Datas

  • Clique em uma data para ativar/desativar entregas
  • Confirmação via dialog antes de aplicar mudanças
  • Feedback visual com cores:
    • Cinza (#6B7280): Entrega ativa
    • Vermelho (#EF4444): Sem entrega

Banco de Dados

Conexão Oracle

O sistema utiliza o node-oracledb em modo Thin (padrão), que não requer binários nativos. Para usar o modo Thick, configure a variável ORACLE_LIB_DIR.

Pool de Conexões

  • Gerenciamento automático de conexões
  • Configuração de pool min/max
  • Timeout e incremento configuráveis
  • Auto-commit habilitado para operações de escrita

Funções Disponíveis

// Executar queries
executeOracleQuery(sql: string, binds?: any[]): Promise<any[]>

// Executar updates
executeOracleUpdate(sql: string, binds?: any[]): Promise<number>

// Obter pool
getOraclePool(): Promise<oracledb.Pool>

// Fechar pool
closeOraclePool(): Promise<void>

Segurança

  • Variáveis de ambiente para credenciais sensíveis
  • Prepared statements para prevenir SQL injection
  • Pool de conexões com timeout configurável
  • Validação de entrada no frontend

Scripts Disponíveis

npm run dev      # Servidor de desenvolvimento
npm run build    # Build de produção
npm start        # Servidor de produção (porta 3003)
npm run lint     # Verificação de código com ESLint

Contribuindo

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -m 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

Licença

Este projeto é privado e proprietário.

Autor

Desenvolvido por Joelson

Suporte

Para questões e suporte, entre em contato com a equipe de desenvolvimento.