Backend API desenvolvido com NestJS para o projeto Pro4Tech, utilizando arquitetura modular, Prisma ORM para gerenciamento de banco de dados e Docker para containerização.
- Visual Studio Code - Editor de código
- Node
- Postgresql
- Docker - ( Opcional )
Você pode rodar o backend de duas formas principais:
-
Clone o repositório
git clone https://github.com/seu-usuario/pro4tech-backend.git cd pro4tech-backend git checkout -b develop origin/develop git checkout develop -
Configure as variáveis de ambiente
cp .env.example .env DATABASE_URL="postgresql://seu_usuario:sua_senha@localhost:5432/seu_banco_de_dados?schema=public" # Edite o arquivo .env conforme necessário
-
Suba o banco de dados PostgreSQL via Docker
docker-compose up -d # Isso irá iniciar apenas o banco de dados PostgreSQL #docker-compose down para finalizar
-
Inicie o backend localmente
npm install npx prisma generate npx prisma migrate deploy npm run seed # Popular o banco com dados iniciais npm run start:dev -
Acessar as Rotas: http://localhost:3333/api
Repita os passos 1 e 2 da Opção 1 para clonar o repositório e configurar as variáveis de ambiente.
-
Certifique-se que o PostgreSQL está rodando localmente
- Configure o acesso ao banco no
.envconforme seu ambiente local.
- Configure o acesso ao banco no
-
Gere o Prisma Client e inicie o backend
npm install npx prisma generate npx prisma migrate deploy npm run seed # Popular o banco com dados iniciais npm run start:dev -
Acessar as Rotas: http://localhost:3333/api
pro4tech-backend/
│
├── 📂 .devcontainer/ # Configuração Dev Containers
├── 📂 docs/ # Documentação
│ ├── comandos.md # Comandos e guias detalhados
│ └── security.md # Guias de segurança
│
├── 📂 prisma/ # Prisma ORM
│ ├── schema.prisma # Schema do banco de dados
│ ├── seed.ts # Script de seed (dados iniciais)
│ └── migrations/ # Histórico de migrations
│
├── 📂 src/ # Código fonte
│ ├── main.ts # Entry point e configuração global
│ ├── app.module.ts # Módulo raiz (agregação de módulos)
│ ├── 📂 common/ # Código compartilhado
│ │ ├── decorators/ # Decoradores customizados
│ │ ├── dtos/ # DTOs globais
│ │ ├── filters/ # Filtros de exceção
│ │ └── interceptors/ # Interceptadores
│ ├── 📂 database/ # Camada de banco de dados
│ │ └── prisma/ # Módulo Prisma
│ └── 📂 modules/ # Módulos de negócio
│ ├── 📂 auth/ # Autenticação e autorização
│ ├── 📂 user/ # Gerenciamento de usuários
│ ├── 📂 agent/ # Gerenciamento de agentes/atendentes
│ ├── 📂 company/ # Gerenciamento de empresas
│ ├── 📂 support-group/ # Grupos de suporte
│ ├── 📂 ticket-subject/ # Assuntos de tickets
│ ├── 📂 triage-rule/ # Regras de triagem automatizada
│ └── 📂 access-code/ # Códigos de acesso
│
├── 📂 test/ # Testes E2E
├── 📄 docker-compose.yml # Orquestração de containers
├── 📄 Dockerfile # Imagem Docker
└── 📄 package.json # Dependências
Tipo de Arquitetura: Modular
Comandos completos: Veja docs/comandos.md
Cada módulo de negócio segue o padrão:
- Controller: Recebe e trata requisições HTTP
- Service: Implementa a lógica de negócio
- Repository: Acessa dados no banco (Prisma)
- DTOs: Validação e tipagem de dados (entrada/saída)
- Module: Agregação e exportação do módulo
- Guardiões JWT customizados
- Decoradores de autenticação
- Gerenciamento de permissões
- CRUD completo de usuários
- Atribuição de papéis (roles)
- Cadastro de agentes
- Associação com grupos de suporte
- Status e disponibilidade
- Gerenciamento de empresas
- Configurações por empresa
- Organização de agentes em grupos
- Roteamento de tickets
- Categorização de tickets
- Gerenciamento de assuntos disponíveis
- Triagem automatizada de tickets
- Roteamento inteligente para grupos
- Escalação de prioridades
- ORM: Prisma
- Banco: PostgreSQL
- Migrations: Automáticas via Prisma
O projeto inclui um script de seed que popula o banco com dados iniciais para facilitar testes:
npm run seed- 📊 Empresas (companies): 2-3 empresas de exemplo
- 👤 Usuários: Usuários de diferentes papéis (admin, agent, support)
- 🤝 Agentes: 5-10 agentes de atendimento
- 👥 Grupos de Suporte: Grupos organizados por departamento
- 🏷️ Assuntos: Categorias de tickets (Suporte Técnico, Faturamento, etc)
- ⚙️ Regras de Triagem: Regras de roteamento automático
Veja prisma/seed.ts para detalhes completos.
Para resetar o banco e reexecutar todas as migrations + seed:
npx prisma migrate reset --force
# Isso irá:
# 1. Dropar o banco
# 2. Recriar o banco
# 3. Executar todas as migrations
# 4. Executar o seed automaticamente# Desenvolvimento
npm run start:dev # Inicia com hot-reload
# Produção
npm run build # Build do projeto
npm run start:prod # Inicia versão otimizada
# Banco de Dados
npm run seed # Popular dados iniciais
npx prisma studio # UI visual do banco
npx prisma migrate dev # Criar nova migration
npx prisma migrate deploy # Aplicar migrations
# Linting e Testes
npm run lint # ESLint
npm run test # Testes unitários
npm run test:e2e # Testes E2EEste projeto está sob a licença especificada no arquivo LICENSE.