The CQRS and Event Sourcing components for PHP

Crafted for Your Enterprise App

prooph components include everything to get you started with CQRS and Event Sourcing

Enterprise-ready CQRS and Event Sourcing packages for PHP with support for the most famous PHP web frameworks. Plays well with Microservices, too!

Awesome Features

prooph components is a set of loosely coupled PHP packages that can be composed to a powerful toolbox

Event Sourcing

It is different than what you've learned. Explore a fresh new way of designing and developing software with a clear focus on intent, behaviour and domain events.

Event-Store

Turn your traditional database into a full-featured event store. No new technology stack required. No magic involved. Just another way to organize and manage data.

Snapshot-Store

High-performance write operations without losing the simplicity and scalability of PHP's Shared Nothing Architecture in an event centric system.

Persistent Projections

With persistent projections you can feed event streams directly into read-optimized databases that serve your data at the speed of light.

CQRS Service-Bus

Message-based communication between different parts of a system is the basic building block for scalable and maintainable enterprise software.

Message Queue

Shift work to background jobs, manage long-running business processes and handle high traffic with seamless message queue integrations.

prooph components are 100% Open Source

Corporate-Friendly Open Source BSD License

Hosted on GitHub

Good To Know

prooph is designed for Event Sourcing in PHP

Abstraction Layer

prooph is mainly designed as an abstraction layer that supports CQRS / ES using existing infrastructure

Tackle Complexity

prooph is meant to be used in larger applications dealing with complex business logic and distributed processes.

Domain-Driven Design

If you think your project will benefit from Domain-Driven Design it will likely benefit from prooph as well.

Monolith or Microservice

prooph plays well with both due to its loosely coupled components that can be used alone or all together.

Event Sourcing

Event Sourcing is a mind shift in the way how software is designed and developed

Event Storming Sessions

Distributed Domain-Driven Design

Behaviour-Driven Development

Task-based UI Design

Event-oriented Testing

Production Audit Log

Supported Technologies

Growing list of platforms supported

Intro

CQRS / ES sounds great but it looks too complex and difficult to learn?
We've got you covered!

Nomad Lightning Talk

Documentation & Examples

Each component ships with its own bookdown.io docs. However, we use the remote content feature of bookdown to collect the components docs and join them to a single book. This will help you find information quickly.

Read The Book

Our so called "proophessor-do" example app demonstrates prooph components in action. It is available in three versions using different web layers, so that you feel at home even if looking at a CQRS / ES for the first time.

prooph in Production

prooph is used in a couple of enterprise projects. It runs in dockerized Microservices on Amazon AWS as well as side-by-side with Doctrine ORM in monolithic PHP applications. It powers eCommerce, booking and content management solutions to name a few.

Commercial support and workshop offers are available. All that makes prooph one of the best options for critical, high traffic applications.

  • Community
  • Stability
  • Free Chat
  • Commercial Support
Get In Touch

Test Coverage

prooph/event-store
0%
prooph/pdo-event-store
0%
prooph/event-sourcing
0%
prooph/service-bus
0%

Our History

The Initial commit of prooph/service-bus was committed on 7 Mar 2014 by @codeliner.

Followed by prooph/event-store on 19 Apr 2014.

These two commits mark the beginning of an exciting journey of collective learning and joint open source development.

Hi, first of all, many thanks for this great library. Expect some PR's in near future from me.

With this promise @prolic joined the prooph project on 23 May 2015. Since this day his ongoing high-quality contributions are pushing prooph in one direction: forward!

2016 was another great year for prooph. prooph/event-store v6 and prooph/service-bus v5 were continuously improved and the community started to grow.

Tweets, talks, workshops, magazin articles, the prooph logo, first prooph meetup, hundreds of contributions and many great discussions in our prooph/improoph chat by more than 100 people around the world turned prooph into a first-class open source project.

With version 7 of prooph/event-store prooph enters the next level of evolution. Persistent projections and an event store HTTP API provide new capabilities to manage and consume event streams in PHP applications.

More than 10 core contributors and many more community members work together on various prooph packages like web framework and infrastructure integrations, annotations support, dedicated prooph Docker images and so on. prooph is a great project with a bright future. A big thx to everybody who is involved!


Hall of Fame

Everybody in the Hall of Fame is a prooph hero. All of them have successfully passed an exercise in our learning application proophessor-do which helps exploring the unknown world of CQRS / ES

Danny van der Sluijs

Netherlands, Vianen

Exercise #1: Mark a todo as done

Bas Kamer

amsterdam, nl

Exercise #2: Reopen a todo

Wojtek Gancarczyk

Berlin

Exercise #3: Add deadline to todo

Roman Sachse

Osnabrück

Exercise #4: Add reminder to todo

Dranzd Viper

-

Exercise #5: Mark todo as expired

Mike Zukowsky

Poland

Exercise #5: Notify assignee when todo deadline is expired

Lucas Courot

Lyon, France

Exercise #7: Check that email address is unique

What users say

See what our users love about prooph components

What's New

New Releases, Events and Announcements

Out now: prooph Event-Store Version 7!

After one year of development the 7th edition of prooph/event-store is finally available. The new version is a complete rewrite and ships with long planed improophments like usage of PHP 7.1 language features and performance optimizations. But wait, there's more!

Instead of one event store implementation using different database adapters we now have event store interfaces and database specific implementations. This allows us to optimize for vendor needs and support more kinds of event stores in the future.

Some additional query methods enable communicating with the event store over HTTP which is a precondition for an event store management UI. So be prepared for some awesome tools available for prooph/event-store soon.

Another great new feature is the possibility to run persistent projections against the event store. Those projections are executed in the background and update the read model as soon as new events arrive in the store. Check out the new feature in our proophessor-do example app and of course in the docs.

Upgrading from an older version requires some work. We've prepared some update notes for you. Don't worry if you cannot update immediately. prooph/event-store v6 will receive bugfixes until the end of 2017.

Migration from v6

Version 6 prooph Service-Bus released!

Increased performance while still being extremely flexible, optimized for PHP 7.1 - these are the key facts of the newest version of prooph/service-bus. If you're coming from an older version you should take a look at the migration docs.

Support for prooph/service-bus v5 will end on 31 Dec 2017.

Read More

prooph meetup 2016

The very first official prooph meetup! On 30 Nov 2016 the hosts Insecia Cloud Services and prooph software GmbH have invited the prooph community to meet in Potsdam and talk about prooph, DDD, CQRS and Event Sourcing while enjoying free food and drinks. Two talks by @codeliner and @prolic informed about upcoming releases of prooph/event-store and prooph/service-bus as well as some insights about prooph in production.

We'll definitely host a meetup in 2017, too. Stay tuned!

Impressions