|
| 1 | +# Da hora ter você por aqui! |
| 2 | + |
| 3 | +Quer contribuir com código? Nice 🤘 |
| 4 | + |
| 5 | +Aqui vão alguns passos pra executar o projeto em desenvolvimento. |
| 6 | + |
| 7 | +## Requisitos |
| 8 | + |
| 9 | +1. [node.js](https://nodejs.org/pt/download) v20+ |
| 10 | +1. [pnpm](https://pnpm.io/installation) instalado |
| 11 | +1. [docker](https://docs.docker.com/engine/install) instalado |
| 12 | + |
| 13 | +## Clone o projeto |
| 14 | + |
| 15 | +```sh |
| 16 | +git clone https://github.com/DeveloperParana/devmx |
| 17 | +``` |
| 18 | + |
| 19 | +## Variáveis de ambiente |
| 20 | + |
| 21 | +Configure a senha do banco e segredo jwt como quiser para uso local. |
| 22 | + |
| 23 | +Para isso, renomeie o arquivo [`.env-example`](./.env-example) para `.env` |
| 24 | + |
| 25 | +```sh |
| 26 | +mv .env-example .env |
| 27 | +``` |
| 28 | + |
| 29 | +## Docker |
| 30 | + |
| 31 | +Essas variáveis são usadas no arquivo [docker-compose.yml](./docker-compose.yml). |
| 32 | + |
| 33 | +> [!IMPORTANT] |
| 34 | +> Primeiro preencha os valores para `DB_USER`, `DB_PASS`, `JWT_SECRET` no arquivo [.env](./.env), salve e só depois disso execute o docker. |
| 35 | +
|
| 36 | + |
| 37 | +```sh |
| 38 | +docker compose up -d |
| 39 | +``` |
| 40 | + |
| 41 | +## Instalação |
| 42 | + |
| 43 | +Instale as dependências do projeto |
| 44 | + |
| 45 | +```sh |
| 46 | +pnpm install |
| 47 | +``` |
| 48 | + |
| 49 | +## Execução |
| 50 | + |
| 51 | +Execute o back-end para criar as collections no banco |
| 52 | + |
| 53 | +```sh |
| 54 | +pnpm dev:server |
| 55 | +``` |
| 56 | + |
| 57 | +Assim que conluir, você já pode finalizar o processo (`Ctrl` + `C` / `Cmd` + `C`), pois você não quer criar dados úteis manualmente, certo? |
| 58 | + |
| 59 | +## Seeds |
| 60 | + |
| 61 | +Preparei alguns seeds pra você importar na base de dados, mas primeiro verifique se você tem o comando `mongoimport`, caso não tenha, acesse [este link](https://www.mongodb.com/pt-br/docs/database-tools/installation/installation/#installing-the-database-tools) para saber como instalar. |
| 62 | + |
| 63 | +> [!NOTE] |
| 64 | +> Ele é necessário apenas para importar dados iniciais não obrigatórios, como dados de login com permissões distintas e todas as cidades do brasil com latitude e longitude. |
| 65 | +
|
| 66 | + |
| 67 | +Para importar execute, não se esqueça de colocar seu usuário no `--username=seu-user` configurado no [`.env`](./.env). Ao executar, ele irá solicitar a senha que foi configurada no mesmo arquivo. |
| 68 | + |
| 69 | +### Cidades |
| 70 | + |
| 71 | +```sh |
| 72 | +mongoimport --host=localhost --port=27017 --username= --authenticationDatabase=admin --db=devparana --collection=citycollections --file=assets/seeds/city-collection.json |
| 73 | +``` |
| 74 | + |
| 75 | +### Usuários |
| 76 | + |
| 77 | +```sh |
| 78 | +mongoimport --host=localhost --port=27017 --username= --authenticationDatabase=admin --db=devparana --collection=accountcollections --file=assets/seeds/account-collection.json |
| 79 | +``` |
| 80 | + |
| 81 | +## Agora sim! |
| 82 | + |
| 83 | +Agora tudo está configurado pra você executar em desenvolvimento, configurei a execução do back-end e front-end no mesmo comando a seguir. |
| 84 | + |
| 85 | +```sh |
| 86 | +pnpm dev |
| 87 | +``` |
| 88 | + |
| 89 | +## Convenção usada em commits |
| 90 | + |
| 91 | +> [!WARNING] |
| 92 | +> Antes de escrever seu commit, execute `lint`, `test` e `build` dos projetos afetados pela sua alteração com o comando `pnpm affected`. |
| 93 | +
|
| 94 | +Os commits podem ser feitos em português, mas use inglês para termos técnicos, não tente traduzi-los quando eles são conhecidos e usados em inglês, por gentileza. |
| 95 | + |
| 96 | +> [!TIP] |
| 97 | +> Use o comando `pnpm commit`, e apenas responda as perguntas, assim seu commit seguirá a convenção utilizada. |
| 98 | +
|
| 99 | + |
| 100 | +## Arquitetura |
| 101 | + |
| 102 | +Trata-se de responsabilidade e relacionamentos, ou seja, qual a responsabilidade de cada camada e quais camadas podem depender diretamente uma das outras. Esta é uma convenção chamada [enforce module boundaries](https://nx.dev/features/enforce-module-boundaries#enforce-module-boundaries) e quem permite que as regras sejam aplicadas é o [nx](https://nx.dev). |
| 103 | + |
| 104 | +### Responsabilidades e relacionamentos entre tipos de bibliotecas |
| 105 | + |
| 106 | + |
| 107 | +A tabela a seguir representa a configuração no arquivo [`.eslintrc.json`](.eslintrc.json). |
| 108 | + |
| 109 | +| | api | util | domain | data | ui | feature | resource | app | |
| 110 | +| ---------: | :-: | :--: | :----: | :--: | :-: | :-----: | :------: | :-: | |
| 111 | +| `api` | ✓ | 𝗫 | 𝗫 | 𝗫 | 𝗫 | 𝗫 | 𝗫 | 𝗫 | |
| 112 | +| `util` | ✓ | ✓ | 𝗫 | 𝗫 | 𝗫 | 𝗫 | 𝗫 | 𝗫 | |
| 113 | +| `domain` | ✓ | ✓ | ✓ | 𝗫 | 𝗫 | 𝗫 | 𝗫 | 𝗫 | |
| 114 | +| `data` | ✓ | ✓ | ✓ | ✓ | 𝗫 | 𝗫 | 𝗫 | 𝗫 | |
| 115 | +| `ui` | ✓ | ✓ | 𝗫 | 𝗫 | ✓ | 𝗫 | 𝗫 | 𝗫 | |
| 116 | +| `feature` | ✓ | ✓ | 𝗫 | ✓ | ✓ | ✓ | 𝗫 | 𝗫 | |
| 117 | +| `resource` | ✓ | ✓ | 𝗫 | ✓ | 𝗫 | 𝗫 | ✓ | 𝗫 | |
| 118 | +| `app` | ✓ | ✓ | 𝗫 | ✓ | ✓ | ✓ | ✓ | 𝗫 | |
| 119 | + |
| 120 | +Caso tenha interesse em aprofundar neste assunto e descobrir os motivos, recomendo que leia um conteúdo que escrevi ano passado, você pode fazer download através do link [Arquitetura em camadas, uma abordagem sobre responsabilidades e relacionamentos](https://conteudode.dev/pdf/nx). |
| 121 | + |
| 122 | + |
| 123 | +--- |
| 124 | + |
| 125 | + |
| 126 | +``` |
| 127 | + .......... |
| 128 | + .............. |
| 129 | + .................. |
| 130 | + ........................ |
| 131 | + ............................ |
| 132 | + ................................ |
| 133 | + .................................... |
| 134 | + ........................................ |
| 135 | + .................. ................... |
| 136 | + ............ ..... ...... .................... |
| 137 | + ............ ... ... ...... ...................... |
| 138 | + .............. .... ... .... .............. |
| 139 | + ........ ..... ..... ..... .... ............... |
| 140 | + ........ ...... ....... ..... . .... ......... |
| 141 | + ......... .... ...... ....... ....... .... ... ......... |
| 142 | + ............. ...... .... ........ ..... ... ............ |
| 143 | + ................ ........... ........ ...... ............... |
| 144 | + ................ ................. ..... ........ ................ |
| 145 | + ................ ................ ......... ................ |
| 146 | + ................. .............. ............... ................ |
| 147 | + .................. .... ................. ............... |
| 148 | + .................... ................. ............ |
| 149 | + ........................... ............... ........... |
| 150 | + ............................ ....... .......... |
| 151 | + .......................... . ............ |
| 152 | + ........................ .................... |
| 153 | + ...................... ...................... |
| 154 | + ................... ................... |
| 155 | + ................. ................. |
| 156 | + ............... ............... |
| 157 | + ............. ............. |
| 158 | + ........... ........... |
| 159 | + :........ ......... |
| 160 | + ...... ...... |
| 161 | + .... .... |
| 162 | + .. .. |
| 163 | +``` |
0 commit comments