webwerkwien / contao-consho-bundle
Consho - E-commerce for Contao. Multi-shop, API-first, built for EU compliance.
Package info
github.com/webwerkwien/contao-consho-bundle
Type:contao-bundle
pkg:composer/webwerkwien/contao-consho-bundle
Requires
- php: ^8.4.1
- ext-gd: *
- ext-sodium: *
- ext-zip: *
- brick/math: ^0.20 || ^1.0
- chillerlan/php-qrcode: ^6.0.1
- contao/core-bundle: ^5.7
- dompdf/dompdf: ^3.1.6
- horstoeko/zugferd: ^1.0.132
- symfony/http-client: ^7.4
- symfony/intl: ^7.4
- symfony/mailer: ^7.4
- symfony/microsoft-graph-mailer: ^8.1
- symfony/rate-limiter: ^7.4
- symfony/validator: ^7.4
Requires (Dev)
- contao/manager-plugin: ^2.13
- phpstan/phpstan: ^2.1
- phpstan/phpstan-phpunit: ^2.0
- phpunit/phpunit: ^10.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
E-commerce for Contao. Several shops in one installation, built for EU law.
Version 0.x. Consho is fully usable, but not yet at 1.0: interfaces and the data model may change between minor versions. Read the CHANGELOG before every update.
What Consho does
The core is free (MIT) and runs a complete shop:
| Area | |
|---|---|
| Catalogue | Products with variants, properties and custom fields; list, filter, landing pages, detail page, sitemap, JSON-LD; unit price, manufacturer details, GARAN label |
| Basket and checkout | Guest orders, customer groups, net prices for business customers, reverse charge with VIES check; order button ("Button-Lösung"), consent to the terms and conditions, withdrawal information |
| Shipping and payment | Shipping methods with weight tiers, countries and bulky goods; prepayment, on account, cash on delivery; extension points for payment modules and parcel services |
| After the purchase | Invoice as PDF and HTML (with Giro-Code), cancellation invoice and invoice correction, delivery note per parcel (with its own number range), e-invoice ZUGFeRD EN 16931 for business customers; invoices issued by Consho, by an invoicing module or outside Consho, per shop; mails; order page via token; withdrawal function (§ 356a BGB, § 13a FAGG); customer account |
| Digital goods and subscriptions | Files and licence keys, terms, subscriptions with subscription rules, follow-up orders, cancellation button, pauses |
| Prices | Promotions with strike-through price under § 9a PrAG / § 11 PAngV, discount rules, discount codes, gift vouchers |
| Stock | Stock levels, availability display, back-in-stock notification, purchase lists |
| Tax | Tax classes and rates per country, tax in the country of destination with threshold counter and quarterly export (EU OSS) |
| GDPR | Data access request as ZIP, erasure request, anonymisation once the retention period has expired |
| Operations | Dashboard with open tasks and findings, setup page, consho:check |
Consho does not supply legal texts. The core provides what is technically required — fields, checks, freezing at the time of purchase — while the operator is responsible for the content.
Paid extensions are in preparation, the first being Consho Connect (product feeds, AI-readable catalogue, write commands for contao-ai). Whatever was once in the free core stays there.
Principles
| Contao first | Images, files, DCA, versioning, voters, members, multilingual content, routing and cache come from Contao, not rebuilt |
| Contao 6 | Nothing that conflicts with Contao 6: Twig only, no input encoding, no $GLOBALS['TL_CONFIG'] |
| Accessibility | WCAG 2.1 AA as the target for all front-end parts |
Requirements
- PHP 8.4 with
gd,sodiumandzip - Contao 5.7
contao/conflictsin the project'scomposer.json, as in the Contao Managed Edition and in Contao's setup for a Symfony application. It keeps outdoctrine/dbal4.5.0, which reports every unique key twice on MySQL and MariaDB:contao:migrateand restoring a backup then fail with "Duplicate key name", and Consho's tables have unique keys.
Installation
Search for webwerkwien/contao-consho-bundle in the Contao Manager, or:
composer require webwerkwien/contao-consho-bundle
Then update the database (contao:migrate) and start in the back end under Consho → Dashboard → Einrichtung
(Setup).
Development
composer install
composer ci # PHPStan + PHPUnit
Licence
MIT — see LICENSE.