Guia para Novos Projetos


Este guia orienta como iniciar um novo projeto seguindo boas práticas de DDD (Domain-Driven Design) e Clean Architecture, garantindo alinhamento entre negócio e tecnologia desde o início.


1. Alinhamento inicial

Antes de escrever qualquer linha de código, é fundamental alinhar expectativas:

  • Tecnologia (Arquiteto + Engenheiros):
    • Discussão sobre infraestrutura (Google Cloud, AWS etc.).
    • Escolha das tecnologias principais (Node.js, PHP, TypeScript, frameworks, bancos de dados).
  • Definições de Arquitetura em nuvem
    • Desenhar arquitetura da infraestrutura que ira ser ultilizada, definindo serviços e escalabilidade.

Credenciais e contas de serviço devem ser criadas e documentadas


2. Início do DDD

Após alinhamento técnico, inicia-se o processo de design de domínio:

  • Levantamento do domínio:
    • Identificar entidades centrais (ex.: Usuário, Pedido, Produto).
    • Mapear objetos de valor e regras de negócio.
    • Definir casos de uso iniciais (ex.: criar usuário, processar pedido).
  • Modelagem inicial:
    • Criar glossário do domínio para evitar ambiguidades.
    • Estabelecer contextos delimitados (Bounded Contexts) se aplicável.
    • Esboçar o fluxo de dados entre camadas (entrada → aplicação → domínio → infraestrutura).

3. Estruturação do projeto

Com base nas definições, criar a estrutura inicial seguindo Clean Architecture:

src/
├── domain/          # Entidades, objetos de valor, interfaces (ports)
├── application/     # Casos de uso, DTOs
├── infrastructure/  # Implementações concretas (bancos, APIs externas)
├── interfaces/      # Controllers, rotas, presenters
├── shared/          # Erros, utils, configs
└── tests/           # Unitários e integração

Para projetos maiores, organizar em módulos por domínio (user/, order/, etc.), cada um com suas próprias camadas.


4. Desenvolvimento

Após a estrutura inicial:

  • Criação do repositório no git
  • Configurar infraestrutura em nuvem
  • Criar esteira de deploy (CI/CD)
  • Criar ambiente de desenvolvimento local
  • Começar o desenvolvimento

⁉️ O que documentar aqui?

  • Passos para rodar localmente.
  • Configurações de Credenciais
  • Sempre que ouver novas features e modificações, adicionar na documentação