https://github.com/edvin/pillar
Elegant Domain-Driven Design & Event Sourcing for Laravel
https://github.com/edvin/pillar
Last synced: 6 months ago
JSON representation
Elegant Domain-Driven Design & Event Sourcing for Laravel
- Host: GitHub
- URL: https://github.com/edvin/pillar
- Owner: edvin
- License: mit
- Created: 2025-11-04T22:44:21.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-11-27T21:37:12.000Z (7 months ago)
- Last Synced: 2025-11-27T22:41:01.044Z (7 months ago)
- Language: PHP
- Size: 1.51 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

[](https://github.com/edvin/pillar/actions/workflows/ci.yml)
[](https://app.codecov.io/gh/edvin/pillar)
[](https://packagist.org/packages/pillar/pillar)
[](https://edvin.github.io/pillar/)
## Elegant DDD & Event Sourcing for Laravel
Build rich domain models and event‑sourced systems — without friction.
[](https://docs.pillarphp.dev)
## Install
```bash
composer require pillar/pillar
php artisan pillar:install
```
## Highlights
- 🧠 **Aggregate sessions (Unit of Work)** — `find()`, mutate, `commit()`
- 🗃️ **Pluggable event store** with **generator‑based** streams & optimistic locking
- 🧵 **Fetch strategies** (load‑all / chunked / streaming)
- 🧬 **Versioned events** & **upcasters**
- 💾 **Snapshotting** policies (Always / Cadence / On‑Demand)
- 🧩 **Object serialization** — JSON by default, MessagePack built-in, or custom serializer
- 🔒 **Payload encryption** — pluggable cipher, per‑event overrides
- 🖥️ **Event stream browser Web UI** — browse streams and timelines and inspect payloads
- ⏱️ **Point‑in‑time reads** — load up to aggregate/global sequence or date via `EventWindow`
- 🎭 **Aliases** for readable event names
- 🔁 **Safe replays** to rebuild projections
- ⚡ **CQRS** — projectors and query bus for a fast, scalable read side
- 🧰 **Facade + buses** for quick wiring
- 🛠️ **Pillar Make**: Bounded Context/Command/Query/Event Scaffolding
- 🧪 **First‑class testing** — Given/When/Then helpers for aggregates & commands, full isolation, exception capture, state inspection
- 🧵 **Command & Aggregate Scenarios** — end‑to‑end command testing using the real bus & event store, or fast in‑memory aggregate testing
- 🧰 **Laravel Tinker integration** — automatic aliases for commands, queries & IDs, plus rich aggregate debugging
## Documentation
Full docs at **https://docs.pillarphp.dev**
— Getting started, concepts, tutorial, configuration & CLI reference.
## License
MIT © Edvin Syse