Bounded Context for the Wikimedia Deutschland fundraising membership subdomain
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Fundraising Memberships

Build Status Scrutinizer Code Quality Code Coverage

Bounded Context for the Wikimedia Deutschland fundraising membership (sub-)domain. Used by the user facing donation application and the "Fundraising Operations Center" (which is not public software).


To use the Fundraising Memberships library in your project, simply add a dependency on wmde/fundraising-memberships to your project's composer.json file. Here is a minimal example of a composer.json file that just defines a dependency on Fundraising Memberships 1.x:

    "require": {
        "wmde/fundraising-memberships": "~1.0"


For development you need to have Docker and Docker-compose installed. Local PHP and Composer are not needed.

sudo apt-get install docker docker-compose

Running Composer

To pull in the project dependencies via Composer, run:

make composer install

You can run other Composer commands via make run, but at present this does not support argument flags. If you need to execute such a command, you can do so in this format:

docker run --rm --interactive --tty --volume $PWD:/app -w /app\
 --volume ~/.composer:/composer --user $(id -u):$(id -g) composer composer install --no-scripts

Where composer install --no-scripts is the command being run.

Running the CI checks

To run all CI checks, which includes PHPUnit tests, PHPCS style checks and coverage tag validation, run:


Running the tests

To run just the PHPUnit tests run

make test

To run only a subset of PHPUnit tests or otherwise pass flags to PHPUnit, run

docker-compose run --rm app ./vendor/bin/phpunit --filter SomeClassNameOrFilter


This Bounded Context follows the architecture rules outlined in Clean Architecture + Bounded Contexts.

With the exception that the persistance is still (mostly) in FundraisingStore, and thus not private to this Bounded Context.

Architecture diagram