|
|
||
|---|---|---|
| .gitea/workflows | ||
| src | ||
| .dockerignore | ||
| .gitignore | ||
| README.md | ||
| algua.eslintrc.json | ||
| components.json | ||
| config.js | ||
| ecosystem.config.js | ||
| eslint.config.mjs | ||
| next.config.mjs | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| renovate.json | ||
| tailwind.config.ts | ||
| tsconfig.json | ||
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
- Clone o repositório:
git clone <url-do-repositorio>
cd portal-dias-rota
- Instale as dependências:
npm install
- 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
- Build da aplicação:
npm run build
- 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
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -m 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - 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.