c975l / crowdfunding-bundle
Symfony bundle for crowdfunding campaigns (counterparts, contributors, news, media) and lottery, checkout out via c975l/payment-bundle
Package info
github.com/975L/CrowdfundingBundle
Type:symfony-bundle
pkg:composer/c975l/crowdfunding-bundle
Requires
Requires (Dev)
README
Symfony bundle for crowdfunding campaigns — counterparts, contributors, news, media, and a lottery tied to campaigns. Checkout goes through c975L/PaymentBundle.
BUNDLE UNDER DEVELOPMENT — USE AT YOUR OWN RISK
Features
- Crowdfunding campaigns with counterparts, contributors, news, videos
- Lottery tied to a crowdfunding campaign (prizes, tickets, winner draw)
- Plugs into PaymentBundle's Basket/checkout engine via
BasketItemProviderInterface - EasyAdmin CRUD for crowdfunding
Requirements
- PHP >= 8.0
- c975L/ConfigBundle
- c975L/UiBundle
- c975L/PaymentBundle — owns the Basket/checkout engine
- c975L/ShopBundle — owns the shared
Mediabase class (DoctrineSINGLE_TABLEinheritance requires every media subclass, including this bundle's, to live in the same bundle asMediaitself; see ShopBundle'sEntity/Media.php). This is the one intentional exception to "satellites never depend on each other" in this ecosystem — splitting it further would require movingMediaitself to UiBundle.
Installation
composer require c975l/crowdfunding-bundle php bin/console doctrine:migrations:diff php bin/console doctrine:migrations:migrate php bin/console c975l:config:load-all
Add to config/routes.yaml:
c975_l_crowdfunding: resource: "@c975LCrowdfundingBundle/" type: attribute
Data compatibility with existing ShopBundle installations
This bundle was extracted from ShopBundle (07/2026). Entity classes kept their original table names
(shop_crowdfunding, shop_crowdfunding_counterpart, shop_lottery, ...) — only the PHP namespace changed
(c975L\ShopBundle\Entity\* → c975L\CrowdfundingBundle\Entity\*), so existing data is read as-is, no migration
needed for the entities that stayed in this bundle.