Template para configuração padronizada de ambiente de desenvolvimento Node.js seguindo os princípios da Clean Architecture.
O projeto segue a Clean Architecture, dividida em camadas:
src/
├── application/ # Regras de Negócio da Aplicação
│ ├── useCases/ # Casos de uso (regras de negócio)
│ ├── dto/ # Objetos de transferência de dados
│ └── interfaces/ # Contratos dos casos de uso
│
├── domain/ # Regras de Negócio da Empresa
│ ├── entities/ # Entidades do domínio
│ ├── interfaces/ # Contratos do domínio
│ ├── valueObjects/ # Objetos de valor
│ └── enums/ # Enumeradores
│
├── infrastructure/ # Frameworks e Ferramentas
│ ├── models/ # Modelos de persistência
│ ├── repositories/ # Implementações dos repositórios
│ ├── services/ # Serviços externos
│ └── database/ # Configurações do banco
│
├── interface/ # Adaptadores de Interface
│ ├── controllers/ # Controladores da API
│ ├── routes/ # Rotas da API
│ ├── middlewares/ # Middlewares Express
│ └── validators/ # Validações de entrada
│
└── shared/ # Código Compartilhado
├── errors/ # Erros customizados
├── utils/ # Funções utilitárias
├── types/ # Tipos compartilhados
├── constants/ # Constantes compartilhadas
└── validators/ # Validadores comuns
- ✅ Estrutura Clean Architecture
- ✅ TypeScript
- ✅ Express.js configurado
- ✅ Persistência de dados agnóstica
- ✅ Validações de entrada
- ✅ Tratamento de erros
- ✅ Logging
- ✅ Middlewares de segurança
- ✅ Documentação automática
# Instalar a lib
npm install toll-bck-node
# Ou usando yarn
yarn add toll-bck-node
- Copie o arquivo
.env.example
para.env
:
cp .env.example .env
- Configure as variáveis de ambiente:
# Servidor
PORT=3000
NODE_ENV=development
# Banco de dados (exemplo)
DB_TYPE=postgres
DB_HOST=localhost
DB_PORT=5432
DB_NAME=toll_db
DB_USER=user
DB_PASS=pass
# Desenvolvimento
npm run dev
# Produção
npm run build
npm start
-
npm run dev
: Inicia o servidor em modo desenvolvimento -
npm run build
: Compila o projeto -
npm start
: Inicia o servidor em produção -
npm test
: Executa os testes -
npm run lint
: Verifica o código -
npm run format
: Formata o código
# Executar testes
npm test
# Cobertura
npm run test:coverage
A documentação é gerada automaticamente usando TypeDoc:
npm run docs
-
Independência de Frameworks
- Frameworks são detalhes
- O domínio não conhece frameworks
-
Testabilidade
- Testes independentes de infraestrutura
- Mocks e stubs facilitados
-
Independência de UI
- Interface é um detalhe
- Mudanças na UI não afetam o domínio
-
Independência de Banco de Dados
- Banco de dados é um detalhe
- Fácil trocar implementações
- Suporte a múltiplos tipos de banco de dados
-
Independência de Externos
- APIs externas são detalhes
- Adaptadores isolam o domínio
- Helmet para headers seguros
- CORS configurável
- Validação de entrada
- Sanitização de dados
- Rate limiting
- Proteção contra ataques comuns
- Fork o projeto
- Crie sua branch (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Push para a branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
- Documentação: [Link para docs]
- Issues: [Link para issues]
- Email: [seu-email@exemplo.com]
- [ ] Suporte a GraphQL
- [ ] Autenticação JWT
- [ ] Cache distribuído
- [ ] Documentação Swagger
- [ ] Docker compose
- [ ] CI/CD Pipeline