# CMS OCCTO Engenharia v1.0 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 16 (App Router) - **Estilização:** Tailwind CSS 4 - **Banco de Dados:** PostgreSQL 12 + 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/ │ │ │ ├── (public)/ # Páginas públicas (home, sobre, contato, projetos, serviços) │ │ │ ├── admin/ # Painel administrativo │ │ │ ├── acesso/ # Página de login │ │ │ └── api/ # API Routes │ │ ├── components/ # Componentes reutilizáveis │ │ └── lib/ # Utilitários (auth, minio, prisma) │ ├── prisma/ │ │ ├── schema.prisma # Schema do banco de dados │ │ └── seed.mjs # Dados iniciais │ └── public/ # Assets estáticos ├── docker-compose.yml # Configuração Docker └── docs/ # Documentação ``` ## ✨ Funcionalidades ### Painel Administrativo - **📄 Páginas** - Edição completa das páginas Home, Sobre e Contato - **🛠️ Serviços** - CRUD de serviços com ícones personalizáveis - **📂 Projetos** - CRUD de projetos/portfólio com upload de imagens - **👥 Usuários** - Gerenciamento de usuários administradores - **💬 Leads** - Visualização de mensagens de contato recebidas - **⚙️ Configurações** - Personalização de cor primária do tema ### Site Público - **Home** - Hero, diferenciais, serviços, sobre, depoimentos, estatísticas, CTA - **Sobre** - Missão, visão, valores da empresa - **Serviços** - Lista de serviços oferecidos - **Projetos** - Portfólio de projetos realizados - **Contato** - Formulário de contato com informações da empresa ### Recursos Técnicos - ✅ Autenticação JWT segura - ✅ Upload de imagens para MinIO (S3) - ✅ Tema dinâmico (cor primária configurável) - ✅ Design responsivo - ✅ SEO otimizado - ✅ Cookies consent LGPD - ✅ Loading states e feedback visual - ✅ Confirmação de exclusão ## 🗄️ Banco de Dados ### Modelos Prisma - **User** - Usuários administradores - **PageContent** - Conteúdo das páginas (JSON flexível) - **Service** - Serviços oferecidos - **Project** - Projetos do portfólio - **Lead** - Mensagens de contato - **SiteSettings** - Configurações do site (tema) ## 🐳 Deploy com Docker ### Serviços - **postgres** - PostgreSQL 12 Alpine - **minio** - MinIO (storage S3-compatible) - **frontend** - Aplicação Next.js ### Variáveis de Ambiente ```env # PostgreSQL POSTGRES_USER=admin POSTGRES_PASSWORD=sua_senha_segura POSTGRES_DB=occto_db # MinIO MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=sua_senha_segura # App DATABASE_URL=postgresql://admin:senha@postgres:5432/occto_db?schema=public JWT_SECRET=seu_jwt_secret_muito_seguro MINIO_ENDPOINT=minio MINIO_PORT=9000 MINIO_ACCESS_KEY=admin MINIO_SECRET_KEY=sua_senha_segura MINIO_BUCKET_NAME=occto-images ``` ### Comandos ```bash # Deploy docker compose up -d --build # Logs docker compose logs -f frontend # Rebuild docker compose down && docker compose up -d --build ``` ## 🔐 Credenciais Padrão Após o seed inicial: - **Email:** `admin@occto.com` - **Senha:** `admin` ⚠️ **Importante:** Altere as credenciais em produção! ## 📝 Changelog v1.0 ### Funcionalidades Implementadas - [x] Sistema de autenticação JWT - [x] CRUD completo de serviços - [x] CRUD completo de projetos - [x] CRUD completo de usuários - [x] Edição de páginas (Home, Sobre, Contato) - [x] Sistema de leads/mensagens de contato - [x] Upload de imagens para MinIO - [x] Configuração de tema (cor primária) - [x] Docker Compose para deploy - [x] Integração com Dokploy - [x] Seed de dados iniciais ### Correções - [x] Hover dinâmico baseado na cor primária - [x] Healthcheck do PostgreSQL - [x] Compatibilidade com CPUs antigos (PostgreSQL 12 Alpine) - [x] Seed em JavaScript puro (sem ts-node em produção) ## 📄 Licença Projeto desenvolvido para OCCTO Engenharia. Todos os direitos reservados. --- **Versão:** 1.0 **Data:** Novembro/2025 **Desenvolvido por:** Assistente IA + Erik