-
Notifications
You must be signed in to change notification settings - Fork 174
Open
Description
Is there a specific reason you chose to organize your files based on the layers instead of the co-locating feature related code?
I'm speaking explicitly about this example:
src
├── application
│ ├── repositories
│ │ ├── todos.repository.interface.ts
│ │ └── users.repository.interface.ts
│ ├── services
│ │ ├── authentication.service.interface.ts
│ │ ├── crash-reporter.service.interface.ts
│ │ ├── instrumentation.service.interface.ts
│ │ └── transaction-manager.service.interface.ts
│ └── use-cases
│ ├── auth
│ │ ├── sign-in.use-case.ts
│ │ ├── sign-out.use-case.ts
│ │ └── sign-up.use-case.ts
│ └── todos
│ ├── create-todo.use-case.ts
│ ├── delete-todo.use-case.ts
│ ├── get-todos-for-user.use-case.ts
│ └── toggle-todo.use-case.ts
├── entities
│ ├── errors
│ │ ├── auth.ts
│ │ └── common.ts
│ └── models
│ ├── cookie.ts
│ ├── session.ts
│ ├── todo.ts
│ ├── transaction.interface.ts
│ └── user.ts
├── infrastructure
│ ├── repositories
│ │ ├── todos.repository.mock.ts
│ │ ├── todos.repository.ts
│ │ ├── users.repository.mock.ts
│ │ └── users.repository.ts
│ └── services
│ ├── authentication.service.mock.ts
│ ├── authentication.service.ts
│ ├── crash-reporter.service.mock.ts
│ ├── crash-reporter.service.ts
│ ├── instrumentation.service.mock.ts
│ ├── instrumentation.service.ts
│ ├── transaction-manager.service.mock.ts
│ └── transaction-manager.service.ts
└── interface-adapters
└── controllers
├── auth
│ ├── sign-in.controller.ts
│ ├── sign-out.controller.ts
│ └── sign-up.controller.ts
└── todos
├── bulk-update.controller.ts
├── create-todo.controller.ts
├── get-todos-for-user.controller.ts
└── toggle-todo.controller.ts
VS a feature based approach:
src
└── modules
├── auth
│ ├── authentication.module.ts
│ ├── authentication.service.interface.ts
│ ├── authentication.service.mock.ts
│ ├── authentication.service.ts
│ ├── controllers
│ │ ├── sign-in.controller.test.ts
│ │ ├── sign-in.controller.ts
│ │ ├── sign-out.controller.test.ts
│ │ ├── sign-out.controller.ts
│ │ ├── sign-up.controller.test.ts
│ │ └── sign-up.controller.ts
│ ├── entities
│ │ ├── auth.error.ts
│ │ ├── cookie.model.ts
│ │ └── session.model.ts
│ └── use-cases
│ ├── sign-in.use-case.test.ts
│ ├── sign-in.use-case.ts
│ ├── sign-out.use-case.test.ts
│ ├── sign-out.use-case.ts
│ ├── sign-up.use-case.test.ts
│ └── sign-up.use-case.ts
├── common
│ ├── common.error.ts
│ └── lib
│ ├── capture-exception.sentry.ts
│ ├── capture-exception.ts
│ ├── with-reporting.sentry.ts
│ └── with-reporting.ts
├── todos
│ ├── controllers
│ │ ├── create-todo.controller.test.ts
│ │ ├── create-todo.controller.ts
│ │ ├── get-todos-for-user.controller.test.ts
│ │ ├── get-todos-for-user.controller.ts
│ │ ├── toggle-todo.controller.test.ts
│ │ └── toggle-todo.controller.ts
│ ├── todo.model.ts
│ ├── todos.module.ts
│ ├── todos.repository.interface.ts
│ ├── todos.repository.mock.ts
│ ├── todos.repository.ts
│ └── use-cases
│ ├── create-todo.use-case.test.ts
│ ├── create-todo.use-case.ts
│ ├── get-todos-for-user.use-case.test.ts
│ ├── get-todos-for-user.use-case.ts
│ ├── toggle-todo.use-case.test.ts
│ └── toggle-todo.use-case.ts
└── users
├── user.model.ts
├── users.module.ts
├── users.repository.interface.ts
├── users.repository.mock.ts
└── users.repository.ts
Metadata
Metadata
Assignees
Labels
No labels