Sistema de loja - a descrição abaixo não está atualizada, o projeto está sendo reconstruído
Informações gerais
- Diversas ferramentas são utilizadas para facilitar a criação de código robusto: phpstan (6 níveis), deptrac, codeniffer.
- O aplicativo é bem testado, com testes categorizados em Aplicativo (E2E), Integração e Testes de Unidade.
- Um sistema de cache baseado em Redis foi implementado.
Soluções técnicas
- Os diretórios são organizados em /Module, que contém subdiretórios para todos os módulos, e /Shared, que inclui componentes compartilhados entre todos os módulos. Cada módulo [Pedido, Produto, Usuário] compreende quatro diretórios:
- Aplicação -> abriga a implementação da lógica da aplicação
- Domínio -> contém coisas relacionadas estritamente a informações de negócios - entidades, enums e interfaces de repositórios
- Infraestrutura -> inclui componentes relacionados à camada técnica, como banco de dados e sistema de cache
- UI -> contém comandos de console ou controladores que servem como conexão entre o usuário e o sistema
- As ações são classificadas em comandos e consultas. Implementei uma solução customizada para armazenamento de informações após a conclusão das ações. Cada comando retorna um CommandResult, enquanto as consultas retornam um QueryResult, que contém informações sobre sucesso, códigos de status e dados recuperados.
- A autenticação é implementada usando a abordagem JWT com LexikJWTAuthenticationBundle.
- A fonte de eventos é usada para armazenar informações sobre o status atual de um pedido. O último status do pedido criado indica seu status atual.
Banco de dados
Documentos da API
Estrutura
Módulo
Comandos usando Make
Inicializar pela primeira vez
Execute o perfil de desenvolvimento
Eliminar migrações, migrar e carregar fixtures
make drop_migrations
make migrate
make load_fixtures
Execute todos os testes
Comandos sem Make
Inicializar pela primeira vez
docker-compose up --profile dev -d
docker-compose exec php bin/console doctrine:migrations:diff
docker-compose exec php bin/console doctrine:migrations:migrate
docker-compose exec php bin/console lexik:jwt:generate-keypair
Para outros comandos, verifique o conteúdo do Makefile
Documentação da API
A documentação da API está disponível em