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: ^2.0.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: ^4.0
- laminas/laminas-permissions-acl: ^2.17
- lbuchs/webauthn: ^2.2
- mahocommerce/icons: ^3
- mahocommerce/maho-composer-plugin: ^4
- matthiasmullie/minify: ^1.3
- monolog/monolog: ^3.9
- paypal/paypal-server-sdk: ^2.2
- 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/routing: ^7.4
- 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
- react/stream: ^1.4
- 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.5.0
- 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-deprecate/mage-api-modules
- dev-wip/declarative-db-schema
- dev-fix/dynamic-category-without-catalogrule
- dev-ci/pin-setup-php-2.37.1
- dev-infra-sync
- dev-feature/bestsellers-onsale-widgets
- dev-fix/onepage-checkout-progress-405
- dev-fix/paypal-setup-maho-26.5.0-backfill
- dev-fix/wysiwyg-undefined-route-url
- dev-phpstan-2.2-fixes-and-lint-script
- dev-legacy-xml-migration
- dev-fix/857-timestamp-explicit-defaults
- dev-opentelemetry
This package is auto-updated.
Last update: 2026-06-01 18:38: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
GenAI transparency
Maho is built by a small team competing in a heavyweight championship, something that traditionally would have needed entire engineering departments behind it. Generative AI is a big part of what makes this realistic, and what allows us to deliver ambitious features along with refactoring, modernization, testing, and documentation, on a small budget and with volunteer effort. We don't hide this and we don't apologize for it. It is an added value of the project, the superpower of our developers and maintainers. Even with AI in the loop, a huge amount of human work still goes into Maho every day: defining specs, designing features, reviewing code, steering the roadmap, addressing issues, managing the community, and keeping the lights on. AI amplifies that effort, it doesn't replace it.
AI tools are used alongside human work for writing and refactoring code, expanding the test suite, drafting documentation and translations, and helping triage pull requests, often highlighting spots the human eye would have missed. Our primary tool is Claude Code with Anthropic's Claude family of models, plus DeepWiki for code exploration; we use them under terms that allow producing output under Maho's OSL-3.0 license.
We built a big set of automated guardrails (PHPStan, PHP CS Fixer, Rector, and more) and an expanding set of tests to keep AI in check (and to help it produce better results), before our maintainers review and validate every part of every PR with no exception, to always deliver the highest quality in the industry. We never merge purely AI-generated changes.
If you're a contributor, AI use in your PRs is welcome. We don't require an explicit disclosure, but you are expected to understand and stand behind the code you submit, just as you would with any other contribution.
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.