Laracon DB
Laracon DB
Talks for "domain-driven-design"
Event Sourcing in Laravel with EventSauce

This talk focuses on implementing event sourcing in Laravel applications using the Event Sauce library. The speaker provides a pragmatic approach to event sourcing, demonstrating how to handle pull requests as an example domain. The talk covers the basics of event sourcing, including aggregates, projections, and process managers, while emphasizing practical code examples over theoretical concepts.

Decoupling the Model from the Framework

A talk about reducing coupling in software systems through domain-driven design principles. The speaker discusses how to move beyond simple CRUD operations by using commands and events to decouple different parts of an application. He emphasizes the importance of using domain language in code, encapsulating business logic, and handling complexity through proper abstractions rather than relying solely on framework patterns.

Future is a thing of the past

A talk about implementing Event Sourcing in Laravel applications, focusing on domain events and how they can be used to track changes in business-critical data. The speaker explains how Event Sourcing differs from traditional CRUD operations, demonstrates implementing domain events for a board game shop example, and discusses projections, read models, and handling application state changes over time.

IntroDDDuction

An introduction to Domain-Driven Design (DDD) that focuses on the importance of communication between developers and domain experts. The speaker emphasizes that DDD is not about specific coding patterns but rather about understanding business domains, creating ubiquitous language, and establishing bounded contexts. He shares personal experiences working with legacy applications and explains how DDD principles can improve software development through better communication.

The world is NOT cruddy by design

This talk discusses moving beyond basic CRUD operations in Laravel applications, focusing on better ways to structure code using domain-driven design principles. The speaker emphasizes using ubiquitous language that matches business requirements rather than database structures, separating read and write operations, and implementing more meaningful actions instead of simple CRUD operations. He shares examples from large-scale projects and demonstrates how to improve code organization using commands and events.

Event Storming for Everyone

A comprehensive talk on Event Storming, a collaborative workshop format that helps teams better understand business processes and domain knowledge. The speaker shares his journey from focusing on technical DDD patterns to discovering the importance of ubiquitous language and bounded contexts, demonstrating how Event Storming can improve communication between developers and domain experts through practical examples of modeling various business processes.

Level up with a Microservices architecture

The speaker presents a practical approach to implementing microservices architecture while avoiding common pitfalls by initially deploying as a monolith. He shares experiences from his time as CTO at Glo, describing how they structured their codebase into independent packages following domain-driven design principles, while maintaining the ability to later transition to true microservices. The talk focuses on achieving the benefits of microservices architecture (like loose coupling and clear boundaries) without immediately taking on all the operational complexity.

Modelling business requirements with Eloquent

The talk discusses how to effectively model business requirements using Laravel's Eloquent ORM while following domain-driven design principles. The speaker demonstrates how to create clean, maintainable code by properly encapsulating business logic, using domain-specific language, and avoiding leaky abstractions. Using an award management system as an example, he shows how to evolve from simple CRUD operations to more complex domain models while keeping the code aligned with business terminology and requirements.

Expressive Eloquent collections

Tim McDonald discusses how to make Laravel Eloquent collections more expressive and maintainable. He explores how collections can be extended to better reflect domain language, reduce code duplication, and improve readability. The talk covers moving logic from models to custom collections, sharing filtering APIs between collections and scopes, and rethinking what Eloquent really means as a complete system rather than just models.