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