mahocommerce / maho
Free and open source ecommerce platform, created in 2024 on the M1 platform, PHP 8.3+
Requires
- php: >=8.3
- composer-runtime-api: ^2
- ext-ctype: *
- ext-curl: *
- ext-dom: *
- ext-fileinfo: *
- ext-filter: *
- ext-ftp: *
- ext-gd: *
- ext-hash: *
- ext-iconv: *
- ext-intl: *
- ext-json: *
- ext-libxml: *
- ext-mbstring: *
- ext-openssl: *
- ext-pdo: *
- ext-pdo_mysql: *
- ext-session: *
- ext-simplexml: *
- ext-soap: *
- ext-sodium: *
- ext-spl: *
- ext-zip: *
- ext-zlib: *
- altcha-org/altcha: ^1.1.0
- bacon/bacon-qr-code: ^3.0
- cbschuld/browser.php: ^2.0
- doctrine/dbal: ^4.4
- dompdf/dompdf: ^3.1
- ezyang/htmlpurifier: ^4.17
- intervention/image: ^3.11
- laminas/laminas-permissions-acl: ^2.17
- lbuchs/webauthn: ^2.2
- mahocommerce/icons: ^3
- mahocommerce/maho-composer-plugin: ^3
- matthiasmullie/minify: ^1.3
- monolog/monolog: ^3.9
- pelago/emogrifier: ^8
- php-units-of-measure/php-units-of-measure: ^2.2
- spomky-labs/otphp: ^11.3
- symfony/cache: ^7.4
- symfony/console: ^7.4
- symfony/filesystem: ^7.4
- symfony/http-client: ^7.4
- symfony/http-foundation: ^7.4
- symfony/mailer: ^7.4
- symfony/polyfill-php84: ^1.31
- symfony/polyfill-php85: ^1.32
- symfony/validator: ^7.4
- symfony/var-dumper: ^7.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3
- mahocommerce/maho-phpstan-plugin: ^4.1
- pestphp/pest: ^4
- phpstan/phpstan: ^2.0
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- psy/psysh: ^0.12.10
- rector/rector: ^2
Suggests
- ext-pdo_pgsql: Required for PostgreSQL database support
- ext-pdo_sqlite: Required for SQLite database support
- fballiano/openmage-cloudflare-turnstile: Turnstile: Cloudflare captcha-like antispam solution
- laminas/laminas-json-server: Install this package if you need JSON-RPC web services functionality
- laminas/laminas-soap: Install this package if you need SOAP web services functionality
- laminas/laminas-xmlrpc: Install this package if you need XML-RPC web services functionality
- mahocommerce/module-braintree: Braintree payment gateway integration
- picqer/php-barcode-generator: Required for gift card barcode generation
Replaces
- magento-hackathon/magento-composer-installer: ^99.99
- openmage/magento-lts: ^99.99
- paragonie/random_compat: ^99.99
- symfony/polyfill-ctype: *
- symfony/polyfill-intl-grapheme: *
- symfony/polyfill-intl-idn: *
- symfony/polyfill-intl-normalizer: *
- symfony/polyfill-mbstring: *
- symfony/polyfill-php80: *
- symfony/polyfill-php81: *
- symfony/polyfill-php82: *
- symfony/polyfill-php83: *
- dev-main
- 26.3.0
- 26.1.0
- 25.11.0
- 25.9.0
- 25.7.0
- 25.5.0
- 25.3.0
- 25.1.0
- 24.11.0
- 24.9.0
- dev-upgrade-altcha-widget-v3
- dev-dependabot/composer/bacon/bacon-qr-code-3.1.1
- dev-dev-prefix-cli-commands
- dev-lsp-structural-xml-autocomplete
- dev-xsd-schemas
- dev-feature/maho-intelligence-mcp
- dev-fix/category-save-select-all-checkbox
- dev-fix/select-columns-expr-type
- dev-phpdoc-conditional-return-types
- dev-add-stringable-for-tostring-rector
- dev-deprecate/mage-api-modules
- dev-fix/suppress-symlink-cache-warning
- dev-fix/cron-cli-schedule-type-error
- dev-fix/crosssell-duplicate-items
- dev-fix/cron-schedule-timezone-offset
- dev-replace-filerobot-image-editor
- dev-feature/improve-cron-management
- dev-upgrade-intervention-image-v4
- dev-dependabot/composer/intervention/image-4.0.0
- dev-dependabot/composer/phpstan/phpstan-2.1.45
- dev-dependabot/composer/mahocommerce/icons-3.41.1
- dev-fix/cataloglinkrule-category-chooser
- dev-fix/tiptap-toolbar-overflow
- dev-pr-742
- dev-health-check-orphaned-resources
- dev-fix/paypal-stale-order-id-on-retry
- dev-paypal-auto-webhook-registration
- dev-fix/paypal-data-security
- dev-fix/checkout-cart-payment-api-cleanup
- dev-port-openmage-5332-grid-acl-cache
- dev-deprecate-flat-catalog
- dev-fix/reports-viewed-products-duplicate
- dev-fix/admin-category-tab-change-indicator
- dev-opentelemetry
This package is auto-updated.
Last update: 2026-04-07 11:32:18 UTC
README
Maho is a modern, open-source ecommerce platform built on PHP 8.3+, Symfony, Doctrine DBAL, Laminas, and 100% vanilla JS. A drop-in replacement for Magento 1 projects with full compatibility and a complete toolchain including Composer and PHPStan plugins, and language packs.
Modern tech stack
- PHP 8.3+ with strict types, attributes, and modern language features
- Doctrine DBAL 4 for database operations - supports MySQL, MariaDB, PostgreSQL, and SQLite
- Symfony components for HTTP, caching, console, validation, mailer, and more
- Monolog for structured logging, DomPdf for PDF generation
- 100% vanilla JavaScript - no jQuery, no Prototype.js, no legacy frameworks
- No legacy baggage - Zend Framework and IE compatibility code have been completely removed
Enterprise features built in
- Automated email marketing with multi-step campaigns and behavior-based triggers
- Customer segmentation with rule-based targeting
- Dynamic categories that update automatically based on product rules
- Passkey and 2FA authentication for secure admin access
- PayPal v6 SDK with advanced checkout, vault, and Pay Later; 1st party Braintree module for cards, Apple Pay, and Google Pay
- Blog module, Meta Pixel integration, and advanced payment restrictions
- Multi-store capabilities with comprehensive APIs (REST, SOAP, JSON-RPC)
Developer experience
- 50+ CLI commands for admin, cache, indexing, cron, database, and development tasks
- Built-in LSP and MCP server for deep IDE integration and AI-assisted development
- Composer plugin for module management, PHPStan plugin for static analysis
- Language packs via Crowdin with 98% coverage
- Clean MVC architecture, event-driven system, and modular design
Getting started
composer create-project mahocommerce/maho-starter yourproject
Or try it instantly with Docker:
docker run -p 54321:443 mahocommerce/maho:nightly
Then open https://localhost:54321 and follow the web installer (select SQLite to skip database setup).
For production Docker setups, see the official Docker images. Full details on web server configuration, database setup, and deployment options in the Getting Started guide.
Documentation
- mahocommerce.com - official documentation
- PHP API reference - full class and method documentation
- DeepWiki - AI-powered code exploration
- Contributing Guide - development setup, code style, testing, and PR guidelines
About the name
"Maho" (pronounced "mah-hoh") is the name of the ancient indigenous people of Lanzarote and Fuerteventura in the Canary Islands - a resilient population who thrived in challenging environments. In Spanish it means nice, cool; in Japanese it means magic. The name reflects our strength and resilience in the demanding landscape of modern ecommerce.
Community
Code of Conduct
All participants are expected to follow our Code of Conduct.