Shopware is an open-source e-commerce platform with API-first architecture exposing three distinct APIs (Admin, Store, Sync) alongside a built-in Twig-based storefront. It uses a custom Data Abstraction Layer instead of a traditional ORM, an event-driven extension system replacing decorators, and Flow Builder for business automation.
shopware/
├── src/
│ ├── Core/ # Business logic & framework
│ ├── Administration/ # Admin UI
│ ├── Storefront/ # Frontend
│ └── Elasticsearch/ # Search integration
├── tests/ # Test suites
└── bin/console # CLI commands
- Backend: PHP 8.2+, Symfony 7, Doctrine DBAL 4
- Frontend Admin: Vue 3, Pinia + Vuex, Vite, TypeScript
- Frontend Storefront: Twig, Bootstrap 5, Webpack 5
- Database: MySQL 8+ / MariaDB 10.11+
- Search: OpenSearch 2 / Elasticsearch 8
- Cache: Redis (optional), Symfony Cache
- Testing: PHPUnit, PHPStan, Jest, Playwright
- NO Doctrine ORM - Uses custom Data Abstraction Layer (DAL)
- NO QueryBuilder - Use
CriteriaAPI instead - NO Doctrine Annotations - Use
EntityDefinitionclasses - NO Doctrine Repositories - Use
EntityRepositorywith DAL
- Prefer Events - EventSubscriberInterface for most extensibility
- Use Decorators Only When - Event timing doesn't fit
/api/- Admin API (full CRUD, admin operations)/store-api/- Store API (customer-facing, storefront)/api/_action/sync- Sync API (bulk operations)
MANDATORY: All code must follow the guidelines in coding-guidelines/.
MANDATORY: All code must be linted according to the following table.
