libs

It's a good convention to put applications-specific libraries into the directory matching the application name. This provides enough organization for small to mid-size applications(Crema is using this) like below.

crema-4.x/
├── apps/
│   ├── source/
│   ├── source-e2e/
│   ├── adminapp/
│   └── adminapp-e2e/
├── libs/
│   ├── constants/
│   ├── context/
│   ├── helpers/
│   ├── hooks/
│   ├── services/
│   ├── source/
│   │   ├── feature-main/
│   │   ├── ui-table/
│   │   └── utils-testing/
│   ├── adminapp/
│   │   ├── feature-main/
│   │   ├── feature-login/
│   │   ├── ui/
│   │   └── utils-testing/
│   └── shared/
│       ├── ui/
│       └── utils-testing/
├── tools/
├── nx.json
├── package.json
└── tsconfig.base.json

For larger projects, it is a good idea to group libraries into application sections like below

crema-4.x/
├── apps/
│   ├── source/
│   ├── source-e2e/
│   ├── adminapp/
│   └── adminapp-e2e/
├── libs/
│   ├── constants/
│   ├── context/
│   ├── helpers/
│   ├── hooks/
│   ├── services/
│   ├── source/
│   │    ├── registration/
│   │    │   ├── feature-main/
│   │    │   ├── feature-login/
│   │    │   ├── ui-form/
│   │    │   └── utils-testing/
│   │    ├── search/
│   │    │   ├── feature-results/
│   │    │   └── utils-testing/
│   │    └── shared/
│   │        └── ui/
│   ├── source/
|   └── shared/
│       ├── ui/
│       └── utils-testing/
├── tools/
├── nx.json
├── package.json
└── tsconfig.base.jso

Last updated