PHPackages                             lava83/ddd-foundation - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. lava83/ddd-foundation

ActiveLibrary[Framework](/categories/framework)

lava83/ddd-foundation
=====================

A robust Domain-Driven Design foundation package for Laravel applications, providing essential building blocks including aggregate roots, domain events, value objects, and shared contracts for clean domain modeling.

v0.1.28(5mo ago)0250MITPHP

Since Sep 20Pushed 5mo agoCompare

[ Source](https://github.com/lava83/ddd-foundation)[ Packagist](https://packagist.org/packages/lava83/ddd-foundation)[ RSS](/packages/lava83-ddd-foundation/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (11)Versions (30)Used By (0)

DDD Foundation for Laravel
==========================

[](#ddd-foundation-for-laravel)

Important

Currently work in progress! 🚧

A comprehensive toolkit providing foundational building blocks for implementing Domain-Driven Design (DDD) patterns in Laravel 12+ applications. This package offers battle-tested base classes, contracts, and infrastructure components to help you build scalable, maintainable domain-driven applications.

Features
--------

[](#features)

- 🏗️ **Aggregate &amp; Entity Base Classes** - Ready-to-use foundation for domain entities with built-in versioning and timestamps
- 🎯 **Event Sourcing Support** - Complete domain event handling with automatic event dispatching via Laravel's event system
- 🔄 **Repository Pattern** - Abstract repository implementation with entity-model mapping
- 🗺️ **Entity-Model Mappers** - Clean separation between domain and infrastructure layers
- 🆔 **UUID Primary Keys** - Built-in UUID support for entities and models
- 🔐 **Optimistic Locking** - Automatic version tracking to prevent concurrent update conflicts
- 📦 **Value Objects** - Type-safe value object implementations (MongoObjectId, UUID, Email, Link, Json)
- 🔌 **Service Layer Pattern** - Interfaces for application and domain services
- ⚡ **Transaction Support** - Automatic transaction handling in repositories

Requirements
------------

[](#requirements)

- **PHP**: 8.3+
- **Laravel**: 12+
- **Dependencies**:
    - `illuminate/support`
    - `illuminate/database`
    - `illuminate/events`
    - `spatie/laravel-data`
    - `ramsey/uuid`

Installation
------------

[](#installation)

Install via Composer:

```
composer require lava83/ddd-foundation
```

Core Concepts
-------------

[](#core-concepts)

### Entity Hierarchy

[](#entity-hierarchy)

```
Entity (Base)
    ├── Aggregate (extends Entity + Event Handling)
    └── Child Entities (extend Entity)

```

Quick Start Guide
-----------------

[](#quick-start-guide)

### 1. Creating an Entity

[](#1-creating-an-entity)

Entities are domain objects with identity that can change over time:

```
