Système de boutique - la description ci-dessous n'est pas à jour, le projet est en cours de reconstruction
Informations générales
- Plusieurs outils sont utilisés pour faciliter la création de code robuste : phpstan (niveau 6), deptrac, codesniffer.
- L'application est bien testée, avec des tests classés en tests d'application (E2E), d'intégration et unitaires.
- Un système de mise en cache basé sur Redis a été implémenté.
Solutions techniques
- Les répertoires sont organisés en /Module, qui contient des sous-répertoires pour tous les modules, et /Shared, qui comprend des composants partagés entre tous les modules. Chaque module [Commande, Produit, Utilisateur] comprend quatre répertoires :
- Application -> héberge la mise en œuvre de la logique d'application
- Domaine -> contient des éléments strictement liés aux informations commerciales - entités, énumérations et interfaces de référentiels
- Infrastructure -> comprend des composants liés à la couche technique, tels que la base de données et le système de mise en cache
- UI -> contient des commandes de console ou des contrôleurs qui servent de connexion entre l'utilisateur et le système
- Les actions sont classées en commandes et requêtes. J'ai mis en place une solution personnalisée pour stocker les informations une fois les actions terminées. Chaque commande renvoie un CommandResult, tandis que les requêtes renvoient un QueryResult, qui contient des informations sur le succès, les codes d'état et les données récupérées.
- L'authentification est implémentée à l'aide de l'approche JWT avec le LexikJWTAuthenticationBundle.
- Le sourcing d'événements est utilisé pour stocker des informations sur l'état actuel d'une commande. Le dernier statut de la commande créée indique son statut actuel.
Base de données
Documentation sur l'API
Structure
Module
Commandes utilisant Make
Initialiser pour la première exécution
Exécuter le profil de développement
Supprimer les migrations, migrer et charger les appareils
make drop_migrations
make migrate
make load_fixtures
Exécutez tous les tests
Commandes sans Make
Initialiser pour la première exécution
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
Pour les autres commandes, vérifiez le contenu du Makefile
Documentation API
La documentation de l'API est disponible sur