Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
57f295edf1 | ||
|
|
0b645a3ffa | ||
|
|
841bf061aa | ||
|
|
6bb6c5b668 | ||
|
|
ccfc5fff65 | ||
|
|
02f776ad0d |
103
CHANGELOG.md
Normal file
103
CHANGELOG.md
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
# Changelog - OCCTO Engenharia
|
||||||
|
|
||||||
|
Histórico de versões e alterações do CMS.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📦 [CMS 1.1] - 27/11/2025
|
||||||
|
|
||||||
|
### 🔧 Correções de Infraestrutura
|
||||||
|
|
||||||
|
- **Tipagem Next.js 15**: Correção de `params` para usar `Promise<{ id: string }>` nas API routes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 📊 Dashboard Admin
|
||||||
|
|
||||||
|
Dashboard com dados dinâmicos em tempo real.
|
||||||
|
|
||||||
|
| Estatística | Descrição |
|
||||||
|
|-------------|-----------|
|
||||||
|
| Projetos | Total e quantidade de ativos |
|
||||||
|
| Mensagens | Total e quantidade não lidas |
|
||||||
|
| Serviços | Total e quantidade ativos |
|
||||||
|
|
||||||
|
**Funcionalidades:**
|
||||||
|
- Últimas 5 mensagens com iniciais, tempo relativo e indicador de não lida
|
||||||
|
- Últimos 5 projetos com imagem, categoria e status
|
||||||
|
- Cards clicáveis redirecionam para páginas correspondentes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🛠️ Módulo de Serviços
|
||||||
|
|
||||||
|
CRUD completo para gerenciamento de serviços.
|
||||||
|
|
||||||
|
#### Admin - Lista (`/admin/servicos`)
|
||||||
|
- Dados dinâmicos da API
|
||||||
|
- Filtro por status (Todos/Ativos/Inativos)
|
||||||
|
- Busca por título e descrição
|
||||||
|
- Ações de editar e excluir com confirmação
|
||||||
|
|
||||||
|
#### Admin - Novo Serviço (`/admin/servicos/novo`)
|
||||||
|
- Seletor visual de ícones em galeria com busca
|
||||||
|
- 70+ ícones organizados por categoria
|
||||||
|
- Campos: título, ícone, status, ordem, descrições
|
||||||
|
|
||||||
|
#### Admin - Editar Serviço (`/admin/servicos/[id]/editar`)
|
||||||
|
- Carrega dados existentes
|
||||||
|
- Mesmo seletor visual de ícones
|
||||||
|
- Atualização via API
|
||||||
|
|
||||||
|
#### Páginas Públicas
|
||||||
|
- `/servicos` - Página principal
|
||||||
|
- `/en/servicos` - Inglês
|
||||||
|
- `/es/servicos` - Espanhol
|
||||||
|
- Exibe apenas serviços ativos, ordenados
|
||||||
|
- Fallback para dados estáticos
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 📁 Módulo de Projetos
|
||||||
|
|
||||||
|
Melhorias no gerenciamento de projetos.
|
||||||
|
|
||||||
|
#### Admin - Lista (`/admin/projetos`)
|
||||||
|
- Filtros por categoria e status
|
||||||
|
- Busca por título, cliente e descrição
|
||||||
|
- Botão de editar em cada projeto
|
||||||
|
|
||||||
|
#### Admin - Editar Projeto (`/admin/projetos/[id]/editar`)
|
||||||
|
- Upload de imagem de capa
|
||||||
|
- Upload de galeria (até 8 imagens)
|
||||||
|
- Todos os campos editáveis
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🎨 Melhorias de UX/UI
|
||||||
|
|
||||||
|
- **Seletor de Ícones**: Galeria visual com busca em tempo real
|
||||||
|
- **Loading States**: Indicadores visuais de carregamento
|
||||||
|
- **Toasts**: Feedback de sucesso e erro
|
||||||
|
- **Confirmação**: Modal antes de ações destrutivas
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📁 Estrutura de Arquivos
|
||||||
|
|
||||||
|
```
|
||||||
|
frontend/src/app/admin/
|
||||||
|
├── page.tsx # Dashboard dinâmico
|
||||||
|
├── projetos/
|
||||||
|
│ ├── page.tsx # Lista com filtros
|
||||||
|
│ └── [id]/editar/page.tsx # ✨ NOVO
|
||||||
|
└── servicos/
|
||||||
|
├── page.tsx # Lista com filtros
|
||||||
|
├── novo/page.tsx # Criação com ícones
|
||||||
|
└── [id]/editar/page.tsx # ✨ NOVO
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Branch**: `cms-1.1`
|
||||||
|
**Status**: ✅ Produção
|
||||||
114
README.md
Normal file
114
README.md
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
# CMS OCCTO Engenharia v1.1
|
||||||
|
|
||||||
|
Sistema de gerenciamento de conteúdo (CMS) desenvolvido para a OCCTO Engenharia.
|
||||||
|
|
||||||
|
## 📋 Visão Geral
|
||||||
|
|
||||||
|
CMS completo para gerenciamento do site institucional da OCCTO Engenharia, empresa especializada em engenharia veicular, mecânica e segurança do trabalho.
|
||||||
|
|
||||||
|
## 🚀 Tecnologias
|
||||||
|
|
||||||
|
- **Frontend**: Next.js 15 (App Router)
|
||||||
|
- **Estilização**: Tailwind CSS 4
|
||||||
|
- **Banco de Dados**: PostgreSQL 16 + Prisma ORM
|
||||||
|
- **Storage**: MinIO (S3-compatible)
|
||||||
|
- **Autenticação**: JWT com bcryptjs
|
||||||
|
- **Deploy**: Docker Compose + Dokploy
|
||||||
|
|
||||||
|
## 📁 Estrutura do Projeto
|
||||||
|
|
||||||
|
```
|
||||||
|
├── frontend/ # Aplicação Next.js
|
||||||
|
│ ├── src/
|
||||||
|
│ │ ├── app/
|
||||||
|
│ │ │ ├── admin/ # Painel administrativo
|
||||||
|
│ │ │ ├── api/ # API Routes
|
||||||
|
│ │ │ ├── (public)/ # Páginas públicas
|
||||||
|
│ │ │ └── [locale]/ # Páginas com i18n
|
||||||
|
│ │ ├── components/ # Componentes reutilizáveis
|
||||||
|
│ │ ├── contexts/ # Contexts React
|
||||||
|
│ │ └── lib/ # Utilitários
|
||||||
|
│ └── prisma/ # Schema e migrations
|
||||||
|
├── docs/ # Documentação
|
||||||
|
└── docker-compose.yml # Configuração Docker
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📦 Changelog
|
||||||
|
|
||||||
|
### [CMS 1.1] - 27/11/2025
|
||||||
|
|
||||||
|
#### 🔧 Correções
|
||||||
|
- Tipagem de `params` para Next.js 15 nas API routes
|
||||||
|
|
||||||
|
#### 📊 Dashboard Admin
|
||||||
|
- Dados dinâmicos em tempo real (Projetos, Mensagens, Serviços)
|
||||||
|
- Últimas 5 mensagens com indicador de não lida
|
||||||
|
- Últimos 5 projetos com imagem e status
|
||||||
|
- Cards clicáveis com navegação
|
||||||
|
|
||||||
|
#### 🛠️ Módulo de Serviços (CRUD Completo)
|
||||||
|
|
||||||
|
| Página | Funcionalidades |
|
||||||
|
|--------|-----------------|
|
||||||
|
| Lista | Filtros, busca, editar/excluir |
|
||||||
|
| Novo | Seletor visual de 70+ ícones |
|
||||||
|
| Editar | Carrega e atualiza dados |
|
||||||
|
| Público | Dados dinâmicos com fallback |
|
||||||
|
|
||||||
|
#### 📁 Módulo de Projetos (Melhorias)
|
||||||
|
|
||||||
|
| Página | Funcionalidades |
|
||||||
|
|--------|-----------------|
|
||||||
|
| Lista | Filtros por categoria/status, busca |
|
||||||
|
| Editar | Upload de capa e galeria (até 8) |
|
||||||
|
|
||||||
|
#### 🎨 UX/UI
|
||||||
|
- Seletor de ícones em galeria com busca
|
||||||
|
- Loading states e toasts
|
||||||
|
- Modal de confirmação para exclusões
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### [CMS 1.0] - 25/11/2025
|
||||||
|
|
||||||
|
#### ✨ Funcionalidades Iniciais
|
||||||
|
- Sistema de autenticação com JWT
|
||||||
|
- CRUD de Projetos com upload de imagens
|
||||||
|
- CRUD de Contatos/Mensagens
|
||||||
|
- Gerenciamento de conteúdo de páginas
|
||||||
|
- Sistema de leads
|
||||||
|
- Suporte a múltiplos idiomas (PT, EN, ES)
|
||||||
|
- Tema claro/escuro
|
||||||
|
- Upload de arquivos via MinIO
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Instalação
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clonar repositório
|
||||||
|
git clone https://git.stackbyte.cloud/erik/octto-engenharia.git
|
||||||
|
|
||||||
|
# Instalar dependências
|
||||||
|
cd frontend && npm install
|
||||||
|
|
||||||
|
# Configurar variáveis de ambiente
|
||||||
|
cp .env.example .env
|
||||||
|
|
||||||
|
# Executar migrations
|
||||||
|
npx prisma migrate dev
|
||||||
|
|
||||||
|
# Iniciar desenvolvimento
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🌐 Deploy
|
||||||
|
|
||||||
|
Consulte o arquivo [README-DEPLOY.md](./README-DEPLOY.md) para instruções de deploy.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Branch Atual**: `cms-1.1`
|
||||||
|
**Status**: ✅ Produção
|
||||||
@@ -47,3 +47,122 @@
|
|||||||
- Opcional: reforçar validação server-side dos limites e criar testes automatizados para o fluxo de tradução.
|
- Opcional: reforçar validação server-side dos limites e criar testes automatizados para o fluxo de tradução.
|
||||||
|
|
||||||
Este resumo deve servir como onboarding rápido para qualquer pessoa ou nova IA que precise continuar o desenvolvimento.
|
Este resumo deve servir como onboarding rápido para qualquer pessoa ou nova IA que precise continuar o desenvolvimento.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## CMS 1.1 - Atualizações (27/11/2025)
|
||||||
|
|
||||||
|
### 🔧 Correções de Infraestrutura
|
||||||
|
- Tipagem de `params` para Next.js 15 nas API routes (`/api/projects/[id]`, `/api/services/[id]`)
|
||||||
|
- Correção para usar `Promise<{ id: string }>` e `await params`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 📊 Dashboard Admin Dinâmico
|
||||||
|
|
||||||
|
O dashboard agora exibe dados reais do banco de dados:
|
||||||
|
|
||||||
|
| Estatística | Descrição |
|
||||||
|
|-------------|-----------|
|
||||||
|
| Projetos | Total e quantidade de ativos |
|
||||||
|
| Mensagens | Total e quantidade não lidas |
|
||||||
|
| Serviços | Total e quantidade ativos |
|
||||||
|
|
||||||
|
**Novas funcionalidades:**
|
||||||
|
- Últimas 5 mensagens com iniciais do nome, tempo relativo e indicador de não lida
|
||||||
|
- Últimos 5 projetos com imagem de capa, categoria e badge de status
|
||||||
|
- Cards clicáveis que redirecionam para as páginas correspondentes
|
||||||
|
- Botões "Ver todos" funcionais
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🛠️ Módulo de Serviços (CRUD Completo)
|
||||||
|
|
||||||
|
#### Admin - Lista de Serviços (`/admin/servicos`)
|
||||||
|
- Dados dinâmicos da API `/api/services`
|
||||||
|
- Filtro por status (Todos/Ativos/Inativos)
|
||||||
|
- Busca por título e descrição
|
||||||
|
- Botões de Editar e Excluir
|
||||||
|
- Modal de confirmação antes de excluir
|
||||||
|
|
||||||
|
#### Admin - Novo Serviço (`/admin/servicos/novo`)
|
||||||
|
- Formulário conectado à API `POST /api/services`
|
||||||
|
- **Seletor visual de ícones em galeria** com busca em tempo real
|
||||||
|
- **70+ ícones** organizados por categoria:
|
||||||
|
- Veículos e Transporte
|
||||||
|
- Ferramentas e Engenharia
|
||||||
|
- Documentos e Laudos
|
||||||
|
- Segurança
|
||||||
|
- Construção e Equipamentos
|
||||||
|
- Inspeção e Verificação
|
||||||
|
- Geral
|
||||||
|
- Campos: título, ícone, status, ordem, descrição curta, descrição completa
|
||||||
|
|
||||||
|
#### Admin - Editar Serviço (`/admin/servicos/[id]/editar`) - **NOVO**
|
||||||
|
- Página criada do zero
|
||||||
|
- Carrega dados do serviço existente via `GET /api/services/:id`
|
||||||
|
- Atualiza via `PUT /api/services/:id`
|
||||||
|
- Mesmo seletor visual de ícones da página de criação
|
||||||
|
|
||||||
|
#### Páginas Públicas de Serviços
|
||||||
|
- `/servicos` e `/[locale]/servicos` agora são dinâmicas
|
||||||
|
- Exibe apenas serviços **ativos**
|
||||||
|
- Ordenados pelo campo `order`
|
||||||
|
- Fallback para dados estáticos se API vazia
|
||||||
|
- Loading state durante carregamento
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 📁 Módulo de Projetos (Melhorias)
|
||||||
|
|
||||||
|
#### Admin - Lista de Projetos (`/admin/projetos`)
|
||||||
|
- Filtros por categoria e status
|
||||||
|
- Busca por título, cliente e descrição
|
||||||
|
- Botão de Editar em cada projeto
|
||||||
|
|
||||||
|
#### Admin - Editar Projeto (`/admin/projetos/[id]/editar`) - **NOVO**
|
||||||
|
- Página criada do zero
|
||||||
|
- Carrega dados do projeto existente
|
||||||
|
- Upload de imagem de capa
|
||||||
|
- Upload de galeria de imagens (até 8)
|
||||||
|
- Todos os campos editáveis
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🎨 Melhorias de UX/UI
|
||||||
|
|
||||||
|
| Feature | Descrição |
|
||||||
|
|---------|-----------|
|
||||||
|
| Seletor de Ícones | Galeria visual clicável com busca em tempo real |
|
||||||
|
| Loading States | Indicadores visuais de carregamento em todas as páginas |
|
||||||
|
| Toasts | Feedback de sucesso e erro nas operações |
|
||||||
|
| Confirmação | Modal antes de ações destrutivas (exclusão) |
|
||||||
|
| Navegação | Links e botões funcionais em todo admin |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 📁 Arquivos Modificados/Criados
|
||||||
|
|
||||||
|
```
|
||||||
|
frontend/src/app/admin/
|
||||||
|
├── page.tsx # Dashboard com dados reais
|
||||||
|
├── projetos/
|
||||||
|
│ ├── page.tsx # Lista com filtros e busca
|
||||||
|
│ └── [id]/editar/page.tsx # ✨ NOVO - Edição de projeto
|
||||||
|
└── servicos/
|
||||||
|
├── page.tsx # Lista com filtros e busca
|
||||||
|
├── novo/page.tsx # Seletor visual de ícones
|
||||||
|
└── [id]/editar/page.tsx # ✨ NOVO - Edição de serviço
|
||||||
|
|
||||||
|
frontend/src/app/
|
||||||
|
├── (public)/servicos/page.tsx # Página pública dinâmica
|
||||||
|
└── [locale]/servicos/page.tsx # Página com locale dinâmica
|
||||||
|
|
||||||
|
frontend/src/app/api/projects/[id]/
|
||||||
|
└── route.ts # Corrigido tipagem Next.js 15
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Branch**: `cms-1.1`
|
||||||
|
**Status**: ✅ Produção
|
||||||
|
|||||||
Reference in New Issue
Block a user