Estrutura de pastas

A estrutura que sigo compartilhando é a que eu julgo ser a mais simples e eficiente para a maioria dos projetos que eu desenvolvo, isso não significa que seja a melhor ou a pior, apenas que eu gosto assim. Gosto da visão de um sistema modular e nesse sentido cada modulo tem a sua própria estrutura.

Claro vale lembrar, estou seguindo DDD.

Overview

Como ilustração vamos utilizar um projeto backend com fastapi para você entender como eu estruturo os projetos.

src - Onde fica todo o código fonte do projeto.

core - Aqui esta o coração da minha aplicação organizada em módulos.

fastapi - Aqui fica o código relacionado a tecnologia que estou utilizando (que neste caso é fastapi)

__seedwork - Aqui fica o código que é compartilhado entre os módulos (Esse é um conceito criado por Martin Fowler)

tests - Aqui ficam os testes de integração e unitários

Como exemplo vamos utilizar apenar um módulo para ilustrar

├── src
│   ├── core
│   │   ├── __seedwork
│   │   │   ├── application
│   │   │   ├── domain
│   │   │   ├── infrastructure
│   │   │   ├── tests
│   │   ├── products
│   │   │   ├── application
│   │   │   │   ├── dto.py
│   │   │   │   ├── use_cases.py
│   │   │   ├── domain
│   │   │   │   ├── entities.py
│   │   │   │   ├── repositories.py
│   │   │   │   ├── validators.py
│   │   │   ├── infrastructure
│   │   │   │   ├── fastapi
│   │   │   ├── tests
│   │   │   │   ├── integration
│   │   │   │   │  ├── application
│   │   │   │   │  ├── domain
│   │   │   │   │  ├── infrastructure
│   │   │   │   ├── unit
│   │   │   │   │  ├── application
│   │   │   │   │  ├── domain
│   │   │   │   │  ├── infrastructure
│   │   │   ├── domain
│   │   │   ├── infrastructure
│   ├── fastapi
│   │   ├── ...

Sei que aparentemente parece uma estrutura redundante, mas acredite, ela é muito útil quando esta lidando com um projeto maior pois as coisas estarão perto de onde precisa estar.

É isso, espero que tenha gostado, se tiver alguma sugestão ou dúvida, pode me chamar no linkedin.