Skip to content

Commit 98b5b45

Browse files
committed
docs: docs pra devs
1 parent 67b6542 commit 98b5b45

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

docs/dev.md

+86
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,89 @@ Alguns scripts úteis no processo de desenvolvimento
1313
| `pnpm lint:fix` | Executa lint e faz correções caso aplicável, esse comando é usado também para correções de dependências entre projetos |
1414
| `pnpm dev:server` | Executa apenas o app back-end para desenvolvimento |
1515
| `pnpm build:server` | Executa o build do app back-end |
16+
17+
### Geradores
18+
19+
Como toda pessoa programadora sabe, tudo que segue um padrão pode ser automatizado, certo? Este repositório segue um padrão de arquitetura, e por isso recomendamos que seja usado algum dos scripts para criação de novas bibliotecas, são facilitadores que ajuda evitar reescrita de código, veja a seguir.
20+
21+
#### Novas bibliotecas
22+
23+
Os scripts são nomeados conforme o tipo de biblioteca que está sendo criada e estão no diretório `tools/scripts/`.
24+
25+
| Script | Obrigatório | Opcional | Objetivo |
26+
| ------------------ | ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
27+
| `domain.sh` | `nome-do-dominio` | `-d` | Cria um novo domínio no repositório |
28+
| `data-source.sh` | `nome-do-dominio` | `-d` | Cria a camada de acesso a dados para o back-end e relacionada ao domínio especificado |
29+
| `data-access.sh` | `nome-do-dominio` | `-d` | Cria a camada de acesso a dados para o front-end e relacionada ao domínio especificado |
30+
| `feature-shell.sh` | `nome-do-dominio` | `-d` | Cria uma `feature` com sufixo `shell` para o domínio especificado e **DEVE** ser a rota primária no app `devmx` |
31+
| `feature-admin.sh` | `nome-do-dominio` | `-d` | Cria uma `feature` com sufixo `admin` para o domínio especificado e **DEVE** ser a rota secundária, na `feature-shell` do mesmo domínio |
32+
| `resource.sh` | `nome-do-dominio` | `-d` | Cria uma camada back-end relacionada ao domínio especificado, **DEVE** configurar os _schemas_ da camada `data-source` e _endpoints_ do domínio |
33+
| `ui-shared.sh` | `nome-do-dominio` | `-d` | Cria uma camada `ui` do front-end para o domínio especificado, serve para compartilhar componentes usados em mais de 2 lugares na aplicação |
34+
| `feature-page.sh` | `nome-do-dominio` | `-d` | Cria uma camada `feature` para rotas públicas no front-end, ou seja, que podem ser acessadas sem necessidade de autenticação |
35+
| `shared-ui.sh` | `nome-do-dominio` | `-d` | Cria uma biblioteca front-end `ui` que será compartilhada entre várias bibliotecas `feature` em vários domínios do repositório |
36+
37+
#### Novas entidades em bibliotecas existentes
38+
39+
Desta vez não se trata de um código facilitador escrito em shell script mas de um gerador de código, o comando é:
40+
41+
```sh
42+
nx g @devmx/plugin-dx-dev:entity nome-da-entidade --scope nome-do-dominio
43+
```
44+
45+
> [!WARNING]
46+
> Antes de executar o comando, use o parâmetro **-d** para simular e garantir que a saída está como esperado, veja o exemplo a seguir.
47+
48+
Para criar uma entidade `quiz` para o domínio `learn`.
49+
50+
```sh
51+
devmx$ nx g @devmx/plugin-dx-dev:entity quiz --scope learn -d
52+
53+
NX Generating @devmx/plugin-dx-dev:entity
54+
55+
CREATE packages/learn/data-access/src/lib/application/quiz.facade.ts
56+
CREATE packages/learn/data-access/src/lib/infrastructure/quiz.http.service.impl.ts
57+
CREATE packages/learn/data-access/src/lib/resolvers/quiz-wrapped.ts
58+
CREATE packages/learn/data-source/src/lib/application/quizzes.facade.ts
59+
CREATE packages/learn/data-source/src/lib/dtos/quiz.ts
60+
CREATE packages/learn/data-source/src/lib/dtos/create-quiz.ts
61+
CREATE packages/learn/data-source/src/lib/dtos/update-quiz.ts
62+
CREATE packages/learn/data-source/src/lib/infrastructure/quizzes.mongo.service.impl.ts
63+
CREATE packages/learn/data-source/src/lib/schemas/quiz.ts
64+
CREATE packages/learn/domain/src/client/services/quiz.ts
65+
CREATE packages/learn/domain/src/client/use-cases/create-quiz.ts
66+
CREATE packages/learn/domain/src/client/use-cases/delete-quiz.ts
67+
CREATE packages/learn/domain/src/client/use-cases/find-quizzes.ts
68+
CREATE packages/learn/domain/src/client/use-cases/find-quiz-by-id.ts
69+
CREATE packages/learn/domain/src/client/use-cases/update-quiz.ts
70+
CREATE packages/learn/domain/src/lib/dtos/create-quiz.ts
71+
CREATE packages/learn/domain/src/lib/dtos/update-quiz.ts
72+
CREATE packages/learn/domain/src/server/services/quizzes.ts
73+
CREATE packages/learn/domain/src/server/use-cases/create-quiz.ts
74+
CREATE packages/learn/domain/src/server/use-cases/delete-quiz.ts
75+
CREATE packages/learn/domain/src/server/use-cases/find-quizzes.ts
76+
CREATE packages/learn/domain/src/server/use-cases/find-quiz-by-id.ts
77+
CREATE packages/learn/domain/src/server/use-cases/update-quiz.ts
78+
CREATE packages/shared/api-interfaces/src/lib/dtos/editable-quiz.ts
79+
CREATE packages/shared/api-interfaces/src/lib/entities/quiz.ts
80+
UPDATE packages/learn/data-access/src/lib/resolvers/index.ts
81+
UPDATE packages/learn/data-access/src/lib/application/index.ts
82+
UPDATE packages/learn/data-access/src/lib/infrastructure/index.ts
83+
UPDATE packages/learn/data-source/src/lib/application/index.ts
84+
UPDATE packages/learn/data-source/src/lib/dtos/index.ts
85+
UPDATE packages/learn/data-source/src/lib/infrastructure/index.ts
86+
UPDATE packages/learn/data-source/src/lib/schemas/index.ts
87+
UPDATE packages/learn/domain/src/client/services/index.ts
88+
UPDATE packages/learn/domain/src/client/use-cases/index.ts
89+
UPDATE packages/learn/domain/src/lib/dtos/index.ts
90+
UPDATE packages/learn/domain/src/server/services/index.ts
91+
UPDATE packages/learn/domain/src/server/use-cases/index.ts
92+
UPDATE packages/shared/api-interfaces/src/lib/dtos/index.ts
93+
UPDATE packages/shared/api-interfaces/src/lib/entities/index.ts
94+
95+
NOTE: The "dryRun" flag means no changes were made.
96+
```
97+
98+
Se a saída segue o mesmo padrão acima, siga em frente e execute sem o parâmetro `-d`
99+
100+
> [!TIP]
101+
> Seu próximo passo é configurar os providers nas camadas `data-access` e `data-source`.

0 commit comments

Comments
 (0)