Book Shop
A POC for DDD and CQRS applications using Symfony as framework and running with php8
User Stories
- Come store manager voglio aggiungere/modificare un autore
- Come store manager voglio aggiungere/modificare/rimuovere un libro dal catalogo
- Come store manager voglio visualizzare gli ordini
- Come utente dello shop voglio registrarmi al fine di effettuare acquisti
- Come store manager voglio che una mail di benvenuto venga inviata a tutti i nuovi utenti
- Come utente dello shop voglio ricercare un libro per titolo o autore al fine di visualizzare il prezzo e la disponibilità
- Come utente dello shop voglio leggere la quarta di copertina di un libro e visualizzare le informazioni al fine di valutarne l'acquisto
- Come utente dello shop voglio aggiungere un libro al carrello al fine di acquistarlo
- Come utente dello shop voglio pagare un ordine
Pattern
- Architettura esagonale
- Command bus
- Separare i read model dal write model condividendo lo storage
- Ogni view dell'applicazione ha il suo read model che evolve indipendentemente
- Collegare le entity attraverso gli id
- Creazione di entity attraverso le factory
- Modellazione di liste di entità come Collection
- Le entity effettuano il dispatch di eventi
- Use case che si verifica a seguito di eventi di dominio
- Persistere gli eventi di dominio
- Reagire a eventi di dominio asincronamente
- Usare il DSL per la configurazione del IoC Container
- Le eccezioni vengono create in maniera 'parlante'
- Immutabilità con analisi statica
Infrastruttura
- Symfony Framework
- Doctrine ORM
- Doctrine Migrations
- MySql
- Bref
- AWS
- GitHub workflows
- OpenAPI
QA Tools
- Psalm
- Deptrac
- PhpCs