Projeto web desenvolvido com PHP e Angular, implementando melhorias na estrutura da aplicação em PHP através do uso de um dos modelos da Arquitetura Limpa, conhecido como Ports and Adapters ou Arquitetura Hexagonal.
Data de criação: Aug 4, 2024
2024-08-13-18-30-37.mp4
My Secret Message é um projeto web desenvolvido com PHP e Angular, projetado para o compartilhamento seguro de mensagens secretas. Para acessar a mensagem, o destinatário precisa de uma chave secreta (secret key), garantindo que apenas pessoas autorizadas possam visualizá-la. Além disso, o criador da mensagem pode definir um tempo de expiração, após o qual a mensagem se torna inacessível, proporcionando uma camada adicional de segurança e controle.
Esse projeto traz como principal feature a implementação de um dos modelos de Arquitetura Limpa conhecido porpulamente como Hexagonal ou Ports and Adapters.
Esse modelo arquitetônico tem como principal recurso a utilização de Portas e Adaptadores, mas afinal, o que isso significa ?
Note
Exemplo - Maria comprou um cartão microSD para usar em sua câmera fotográfica, mas ao tentar inseri-lo, percebeu que sua câmera suporta apenas cartões SD de tamanho padrão. Para resolver o problema, Maria foi até uma loja de informática e adquiriu um adaptador de microSD para SD, permitindo que o cartão funcionasse perfeitamente em sua câmera.
Esse exemplo ilustra perfeitamente o conceito de Ports and Adapters na arquitetura de software. No contexto do sistema, as portas representam interfaces ou pontos de entrada e saída definidos, enquanto os adaptadores são responsáveis por conectar diferentes componentes do sistema, permitindo que trabalhem juntos, mesmo que usem formatos ou tecnologias diferentes.
Na estrutura da aplicação, as regras de negócio podem incluir um sistema de cadastro de usuários que utiliza a interface UserRepositoryPort (ports/out). Como adaptador, posso implementar o repositório UserPostgresRepository (adapters/out), o que me dá a flexibilidade de integrar diferentes tipos de bancos de dados, como em memória, SQL, NoSQL, entre outros. Isso torna a aplicação altamente flexível e preparada para mudanças futuras, permitindo a substituição ou adição de novas tecnologias sem impactar a lógica central do sistema.
Note
Citações Relacionadas
- Livro Arquitetura Limpa: "Portanto, as arquiteturas devem ser tão agnósticas em sua forma quanto práticas."
- Livro Arquitetura Limpa: "A dificuldade em realizar uma mudança deve ser proporcional apenas ao escopo da mudança e não à forma da mudança."
- Livro Arquitetura Limpa: "A arquitetura representa decisões significativas de design que moldam um sistema, onde a significância é medida pelo custo de mudança."
Abaixo está a lista de tecnologias e recursos utilizados neste projeto, juntamente com a implementação da infraestrutura da API. Importante destacar que a API foi desenvolvida sem o uso de frameworks, utilizando exclusivamente PHP.
- API
- PHP:8.2
- ports and adapters architecture
- routes
- request/response
- controllers
- middlewares
- jwt
- libraries
- phpunit/phpunit:10.5
- vlucas/phpdotenv:5.6
- predis/predis:2.2
- ramsey/uuid:4.7
- postgreSQL:15.4
- redis:latest
- PHP:8.2
- Web
- angular:17
- routes
- guards
- interceptors
- services
- events
- libraries
- typescript:5.4
- primeflex:3.3
- primeicons:7
- primeng:17.8
- angular:17
- devOps
- docker
- docker Compose
Note
Para garantir a execução bem-sucedida da aplicação, é essencial seguir os passos abaixo.
# project dir
$ cd mySecretMessage
# install web dependencies
$ cd web && pnpm install
# install www dependencies
$ cd www && composer install && cp .env.example .env
# run docker
$ cd ./mySecretMessage && docker compose -f "docker-compose.yml" up -d --build
# unit tests
$ cd www && composer test:unit
# integration tests
$ cd www && composer test:integration
Eric Neves |
|