diff --git a/Makefile b/Makefile index 54777dab..931a4ab1 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,10 @@ up: docker compose up -d # Para os serviços Docker +stop: + docker compose stop + +# Para e remove os serviços Docker down: docker compose down @@ -48,7 +52,12 @@ reset: # Limpa a cache e o banco reset-deep: - rm -rf var/ + rm -rf var/cache + rm -rf var/log + rm -rf var/storage/agents + rm -rf var/storage/initiatives + rm -rf var/storage/spaces + rm -rf var/storage/users docker compose exec -T php bash -c "php bin/console cache:clear" docker compose exec -T php bash -c "php bin/console d:d:d -f" docker compose exec -T php bash -c "php bin/console d:d:c" @@ -60,7 +69,7 @@ style: # Gera as chaves de autenticação JWT generate_keys: - docker compose exec -T php bash -c "php bin/console lexik:jwt:generate-keypair --overwrite" + docker compose exec -T php bash -c "php bin/console lexik:jwt:generate-keypair --overwrite -n" # Comando para rodar todos os passos juntos -setup: up install_dependencies generate_proxies migrate_database load_fixtures install_frontend compile_frontend generate_keys +setup: up install_dependencies reset-deep generate_proxies migrate_database load_fixtures install_frontend compile_frontend generate_keys diff --git a/README.md b/README.md index 07bd6b17..1fda9633 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,16 @@ A configuração já está dockerizada, então você só precisa ter o Docker Co - **Symfony** 7 - **Aurora User Interface** 5.3 -[Acesse aqui para entender as decisões](./help/STACK.md) - -[Acesse aqui os diagramas](./help/DIAGRAM.md) +## Links Rápidos +- [Acesse aqui para entender melhor nossa Stack](./help/STACK.md) +- [Acesse aqui para entender nossas decisões de backend](./help/TECHNICAL-DECISIONS.md) +- [Esquema do Banco de Dados](./help/DIAGRAM.md) +- [Como criar issues](./help/CREATE-ISSUES.md) +- [Como abrir Pull Requests](./help/CREATE-PULL-REQUESTS.md) +- [Nosso Fluxo de Desenvolvimento](./help/DEV-FLOW.md) +- [Enums](./help/ENUM.md) +- [Arquitetura da Aplicação](./help/README.md) +- [Comandos do terminal](./help/COMMANDS.md) ## Instalação
@@ -43,6 +50,9 @@ cd aurora > > O jeito mais fácil é rodar o comando `make setup`, isso já vai executar todos os passos necessários e deixar a aplicação rodando em > +```bash +make setup +``` Mas se preferir, pode fazer o passo a passo abaixo --- @@ -134,20 +144,24 @@ Estamos utilizando o Symfony e o seu ecossistma de bibliotecas, porém a arquite ```mermaid flowchart TD + style E fill:#e06666, color:white + style S fill:#3d85c6, color:white + HC((HttpClient)) --JsonRequest<--> R[Routes] B((Browser)) --GET/POST--> Routes R --> CA[[ControllerApi]] Routes --> CW[[ControllerWeb]] - CA <--> S[Service] + CA <--> S([Service]) CW <--> S S <--> V{Validator} - V <--> RP[Repository] + V <--is invalid--> E{{Exceptions/Violations}} + V <--is valid--> RP[Repository] RP <==ORM/Doctrine==> D[(Database)] CA --JsonResponse--> HC CW --HTML/CSS/JS--> B ``` -- Para saber mais sobre nossas decisões técnicas [acesse aqui](./help/README.md) +- Para saber mais sobre nossas decisões técnicas [acesse aqui](./help/TECHNICAL-DECISIONS.md) - Para entender nosso fluxo de desenvolvimento decisões técnicas [clique aqui](./help/DEV-FLOW.md)
diff --git a/help/COMMANDS.md b/help/COMMANDS.md index fd70d724..c0f0a298 100644 --- a/help/COMMANDS.md +++ b/help/COMMANDS.md @@ -13,12 +13,12 @@ Inicia os serviços Docker em modo *detached* (em segundo plano).
-DOWN +STOP -### `down` +### `stop` Para os serviços Docker. -- **Uso:** `make down` -- **Descrição:** Executa `docker compose down`, encerrando todos os contêineres e redes iniciados pelo comando `up`. +- **Uso:** `make stop` +- **Descrição:** Executa `docker compose stop`, encerrando todos os contêineres e redes iniciados pelo comando `up`.
@@ -103,6 +103,15 @@ Limpa o cache do Aurora. - **Descrição:** Executa `php bin/console cache:clear` para limpar o cache gerado pela aplicação.
+
+RESET DEEP + +### `reset` +Faz um reset de tudo do diretório storage. +- **Uso:** `make reset-deep` +- **Descrição:** Executa `php bin/console cache:clear` para limpar o cache gerado pela aplicação, e outros comandos para excluir o conteudo do diretório `/var` +
+
STYLE diff --git a/help/README.md b/help/README.md index 2fa9f433..97290d36 100644 --- a/help/README.md +++ b/help/README.md @@ -19,9 +19,9 @@ Essa é a documentação das decisões técnicas, voltada para desenvolvedores e ### Instalação dos pacotes -Para instalar as dependências e atualizar o autoload, entre no container da aplicação e execute: +Para instalar as dependências e atualizar o autoload: ```shell -composer install +make install_dependencies ``` --- @@ -34,7 +34,7 @@ Os `Controllers` em conjunto com as `Routes` permitem criar endpoints para diver Como criar um novo controller #### 1 - Controller -Crie uma nova classe em `/app/Controller/Api/`, por exemplo, `EventApiController.php`: +Crie uma nova classe em `/src/Controller/Api/`, por exemplo, `EventApiController.php`: ```php Como criar uma nova migration -#### Passo 1 - Criar uma nova classe no diretório `/app/migrations` +#### Passo 1 - Criar uma nova classe no diretório `/migrations` ```php Como criar uma nova migration -#### Passo 1 - Criar uma nova classe no diretório `/app/migrations-odm` +#### Passo 1 - Criar uma nova classe no diretório `/migrations-odm` ```php Como criar um novo console command -#### Passo 1 - Criar uma nova classe em `app/src/Command/`: +#### Passo 1 - Criar uma nova classe em `/src/Command/`: ```php Como criar uma DataFixture para uma Entidade -#### Passo 1 - Criar uma nova classe em `app/src/DataFixtures/`: +#### Passo 1 - Criar uma nova classe em `/src/DataFixtures/`: ```php Como criar um novo teste ### Criar um novo teste -Para criar um novo cenário de teste funcional, basta adicionar sua nova classe no diretório `/app/tests/functional/`, com o seguinte código: +Para criar um novo cenário de teste funcional, basta adicionar sua nova classe no diretório `/tests/Functional/`, com o seguinte código: ```php As decisões foram todas tomadas de acordo com a interpretação do time que desempenha o papel de principal braço de desenvolvimento, e todas as decisões foram assinadas pelo até então techlead do projeto [Alessandro Feitoza](https://github.com/alessandrofeitoza) ## PHP -Atualmente na versão 8.3, veja abaixo detalhe sobre o seu uso +Atualmente na versão 8.4, veja abaixo detalhe sobre o seu uso
Porque PHP? diff --git a/help/TECHNICAL-DECISIONS.md b/help/TECHNICAL-DECISIONS.md new file mode 100644 index 00000000..cdecf1c8 --- /dev/null +++ b/help/TECHNICAL-DECISIONS.md @@ -0,0 +1,31 @@ +# Decisões Técnicas - Backend + +Em alguns momentos durante o desenvolvimento precisamos +## Upload de Arquivos + +Para upload de arquivos estamos usando endpoints especificos, seguindo o padrão abaixo + +``` +POST /spaces/{id}/images + +Content-Type: multipart/form-data +``` + +(até a tomada dessa decisão) O suporte da PHP para aceitar `multipart/form-data` só é possível via requisições do tipo `POST`. + +O fluxo de envio da imagem passa por um único `Service` + +```mermaid +flowchart TD + R((Request)) --POST multipart/form-data--> C[[AgentController]] + C --UploadedFile--> S([AgentService]) + S --ParameterBag/UploadedFile--> S2([FileService]) + S2 --contents--> ST{{Storage}} +``` + +## Enums apenas do lado do código +A motivação para não usar o tipo ENUM do proprio banco de dados se deu pois encontramos dificuldades com as migrations, mas, o mais importante: + +**Preferimos manter as regras de negócio na camada da aplicação** ao invés de alocar isso no banco de dados. + +A documentação dos Enums se encontra [aqui](./ENUM.md) \ No newline at end of file