Let's build a real-world Event Sourced application using Laravel and EventSauce!
- Build an inventory managment system named Stockr
- Use Laravel for the base application
- Use EventSauce (EventSauce.io) for the Event Store
- Use Eloquent ORM for parts of the Read Model
- Build an Command Bus around Tactician
- Build a standalone Projections package
- Create the Laravel project
- Bring in EventSauce
- Write our own Message Repository implementation (based on eventsauce/doctrine-message-repository)
-
DB::getDoctrineConnection()(thanks @phcostabh!) -
Laravel and Doctrine DBAL Transactions do not play nicely with each other... - Remove Aggregate Root ID Type column
-
- Build a Command Bus
-
dispatch($className, array $payload = []) -
RecordOnlyCommandBusfor testing with the Command Bus (gist) - Command Validation
- Required Fields
- Allowed Fields
- Testing the Command Bus
- Command Bus
- Command
- Testing with the Command Bus
-
- Bring in Tactician (v2)
-
TacticianCommandBusfor actual usage - Locking Middleware and Laravel Provider for Tactician 2.x (gist)
- Laravel Provider
- Locking Middelware
-
- Build Command Audit Logging into the Command Bus