Existen muchas tecnologías y en cada una han cambiado o han adaptado la propuesta de arquitectura limpia de una manera que difiere de lo normal.
En java / spring, al ser un lenguaje de programación orientado a objectos el usar esta forma de organización brinda una grana ventaja de mantenibilidad y robutez.
src/
└── main/
└── java/
└── com/tuempresa/tuapp/
├── domain/
│ ├── model/ ← Entidades (reglas del negocio)
│ └── repository/ ← Interfaces de acceso a datos
│
├── application/
│ └── usecase/ ← Casos de uso (lógica de aplicación)
│
├── infrastructure/
│ ├── repository/ ← Implementaciones de repositorios (JPA, etc.)
│ └── config/ ← Configuraciones, Beans, etc.
│
└── interface/
├── controller/ ← Controladores REST
└── dto/ ← DTOs, mapeos de entrada/salida
En caso como Node / Express tambien se puede aplicar estos conceptos y serian mas o menos de esta forma:
project-root/
├── src/
│ ├── domain/
│ │ ├── models/ ← Entidades del negocio
│ │ └── repositories/ ← Interfaces (abstractas)
│ │
│ ├── application/
│ │ └── use-cases/ ← Lógica de aplicación, casos de uso
│ │
│ ├── infrastructure/
│ │ └── db/
│ │ ├── models/ ← Esquemas reales de DB (ej: Mongoose, Sequelize)
│ │ └── implementations/ ← Repositorios concretos
│ │
│ └── interface/
│ ├── routes/ ← Definiciones de rutas HTTP
│ ├── controllers/ ← Lógica HTTP (req/res)
│ └── dto/ ← Objetos de entrada/salida
│
├── app.js ← Entry point
└── package.json