Skip to content

pfazzi/book-shop

Repository files navigation

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