Painel ABZ Group
Plataforma de Gestão Interna
📋 Sobre o Projeto
O Painel ABZ Group é uma plataforma de gestão interna desenvolvida para centralizar e otimizar processos administrativos da empresa. A plataforma oferece módulos para gerenciamento de usuários, reembolsos, documentos, notícias e outras funcionalidades essenciais para a operação diária.
🌟 Principais Características
- Sistema de Autenticação Seguro: Login com e-mail/telefone e senha
- Gerenciamento de Usuários: Cadastro, importação e controle de acesso
- Módulo de Reembolso: Solicitação e aprovação de reembolsos com fluxo completo
- Painel Administrativo: Interface intuitiva para gestão de todas as funcionalidades
- Multilíngue: Suporte para múltiplos idiomas
- Design Responsivo: Funciona em dispositivos desktop e móveis
- Banco de Dados MongoDB: Armazenamento robusto e escalável sem esquema fixo
- API RESTful: Endpoints para gerenciamento de todos os recursos
- Upload de Arquivos: Sistema para upload e gerenciamento de documentos e imagens
- Personalização: Configurações de cores, logo, favicon e textos
🚀 Tecnologias Utilizadas
Frontend:
- Next.js 14 - Framework React com SSR e SSG
- React - Biblioteca JavaScript para interfaces
- Tailwind CSS - Framework CSS utilitário
- TypeScript - Superset tipado de JavaScript
Backend:
- Next.js API Routes - API serverless
- MongoDB - Banco de dados NoSQL
- Prisma - ORM para TypeScript e Node.js
- Mongoose - ODM para MongoDB
Autenticação e Segurança:
Email e Notificações:
- Nodemailer - Envio de e-mails
- Twilio - Envio de SMS
💻 Requisitos do Sistema
- Node.js 18.x ou superior
- MongoDB 5.x ou superior
- NPM 8.x ou superior ou Yarn 1.22.x ou superior
- Conta Twilio para envio de SMS (opcional para desenvolvimento)
🔧 Instalação e Configuração
Clonando o Repositório
git clone https://github.com/Caiolinooo/painel-abz.git
cd painel-abz
Instalando Dependências
npm install
# ou
yarn install
Configurando Variáveis de Ambiente
Crie um arquivo .env na raiz do projeto com as seguintes variáveis:
# Banco de dados MongoDB
MONGODB_URI="mongodb+srv://usuario:senha@seu-cluster.mongodb.net/abzpainel"
# Chave secreta para JWT
JWT_SECRET="sua-chave-secreta-jwt"
# Configurações do servidor
NEXT_PUBLIC_API_URL="http://localhost:3000/api"
NEXT_PUBLIC_APP_URL="http://localhost:3000"
# Configurações do Twilio (opcional para SMS)
TWILIO_ACCOUNT_SID="seu-account-sid"
TWILIO_AUTH_TOKEN="seu-auth-token"
TWILIO_VERIFY_SERVICE_SID="seu-verify-service-sid"
# Configurações de Email
EMAIL_SERVER="smtp://seu-usuario:sua-senha@seu-servidor-smtp:587"
EMAIL_FROM="\"ABZ Group\" <seu-email@exemplo.com>"
EMAIL_USER="seu-usuario"
EMAIL_PASSWORD="sua-senha"
EMAIL_HOST="seu-servidor-smtp"
EMAIL_PORT="587"
EMAIL_SECURE="false"
# Configurações de autenticação
ADMIN_PHONE_NUMBER="+5511999999999"
ADMIN_EMAIL="admin@exemplo.com"
ADMIN_PASSWORD="senha-segura"
VERIFICATION_CODE_EXPIRY_MINUTES=15
PASSWORD_EXPIRY_DAYS=365
Executando Migrações do Banco de Dados
npx prisma generate
npx prisma db push
Inicializando o Banco de Dados com Dados Iniciais
npm run db:seed
# ou
yarn db:seed
Iniciando o Servidor de Desenvolvimento
npm run dev
# ou
yarn dev
O servidor estará disponível em http://localhost:3000.
Construindo para Produção
npm run build
npm start
# ou
yarn build
yarn start
🔐 Autenticação e Autorização
O sistema utiliza um mecanismo de autenticação baseado em JWT com diferentes níveis de acesso:
- Usuário Padrão: Acesso básico às funcionalidades
- Gerente: Acesso intermediário com permissões adicionais
- Administrador: Acesso completo a todas as funcionalidades
Os novos usuários podem ser adicionados de três formas:
- Cadastro direto (requer aprovação)
- Convite por e-mail/SMS
- Importação em lote (Excel, CSV)
Acesso Inicial
- Administrador:
- E-mail: Definido na variável de ambiente
ADMIN_EMAIL - Senha: Definida na variável de ambiente
ADMIN_PASSWORD - Telefone: Definido na variável de ambiente
ADMIN_PHONE_NUMBER
- E-mail: Definido na variável de ambiente
📚 Estrutura do Projeto
painel-abz/
├── public/ # Arquivos estáticos
├── prisma/ # Esquemas e migrações do Prisma
├── src/
│ ├── app/ # Rotas e páginas Next.js App Router
│ ├── components/ # Componentes React reutilizáveis
│ ├── contexts/ # Contextos React (auth, i18n, etc.)
│ ├── hooks/ # Hooks personalizados
│ ├── lib/ # Bibliotecas e utilitários
│ ├── models/ # Modelos Mongoose
│ └── types/ # Definições de tipos TypeScript
├── .env # Variáveis de ambiente (não versionado)
├── .env.example # Exemplo de variáveis de ambiente
├── next.config.js # Configuração do Next.js
├── package.json # Dependências e scripts
├── tailwind.config.js # Configuração do Tailwind CSS
└── tsconfig.json # Configuração do TypeScript
📱 Módulos Principais
Gerenciamento de Usuários
- Cadastro e edição de usuários
- Importação em lote
- Controle de permissões
- Histórico de acesso
Reembolsos
- Solicitação de reembolsos
- Upload de comprovantes
- Fluxo de aprovação
- Notificações por e-mail
Documentos
- Repositório de documentos
- Categorização e busca
- Controle de acesso por grupo
Notícias e Comunicados
- Publicação de notícias
- Destaque de conteúdo
- Notificações
Painel Administrativo
- Dashboard: Visão geral do sistema
- Cards: Gerenciamento dos cards do dashboard
- Menu: Configuração dos itens do menu lateral
- Configurações: Personalização do sistema (cores, logo, favicon, textos)
🌎 Internacionalização
O sistema suporta múltiplos idiomas, incluindo:
- Português (Brasil)
- Inglês
- Espanhol
🔗 API RESTful
O sistema possui uma API RESTful completa para gerenciamento de todos os recursos:
/api/auth: Autenticação e autorização/api/admin: Endpoints administrativos/api/users: Gerenciamento de usuários/api/cards: Gerenciamento de cards/api/menu: Gerenciamento de menu/api/documents: Gerenciamento de documentos/api/news: Gerenciamento de notícias/api/reimbursement: Gerenciamento de reembolsos/api/config: Configurações do sistema/api/upload: Upload de arquivos
📧 Sistema de Email
O sistema possui um sistema de envio de emails para notificações e comunicações com os usuários. Os emails são enviados nos seguintes casos:
- Aprovação de Acesso: Quando um administrador aprova uma solicitação de acesso
- Código de Convite: Quando um administrador envia um código de convite
- Solicitação de Reembolso: Quando um usuário envia uma solicitação de reembolso
- Aprovação/Rejeição de Reembolso: Quando um administrador processa uma solicitação
Testando o Envio de Email
Você pode testar a configuração de email acessando a rota:
/api/test-email
🤝 Contribuição
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade) - Faça commit das suas alterações (
git commit -m 'Adiciona nova funcionalidade') - Faça push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
📄 Licença
Este projeto é propriedade pessoal de Caio Valerio Goulart Correia. Todos os direitos reservados. O uso, distribuição ou modificação deste código sem autorização expressa do autor é proibido.
📞 Contato
Para suporte ou dúvidas, entre em contato através do e-mail pessoal do desenvolvedor: caiovaleriogoulartcorreia@gmail.com
Desenvolvido com ❤️ por Caio Valerio Goulart Correia
LinkedIn | GitHub | Instagram
Log in or sign up for Devpost to join the conversation.