Magento 2 is...
...an e-commerce platform (and product) from Adobe (who acquired Magento Inc. in 2018).
Its strengths lie in its open source nature and flexibility to extend/customise with almost no limitation on what can be achieved (other than time and budget!) as well as being able to scale from and support small shops to large enterprises.
It also comes with a vast array of functionality 'out of the box' and is further supported by an active marketplace of extension (also referred to as 'modules') providers as well as many open source offerings provided by the thriving developer community.
The Usual Suspects
Like most e-commerce platforms, Magento 2 offers the key 'shopping cart' features:
- Catalog(ue): products and categories (collections of products)
- Cart and Checkout (with many inbuilt shipping and payment solutions)
- Customer account registration and management
- Administration panel allowing management of key store details, the catalog(ue), basic order fulfilment, marketing and promotional tools, reports and more
The Small But Mighty
However, it's the breadth of other smaller (and not so small) additional features that Magento includes 'out of the box' that makes it unique (though perhaps not so much in recent years due to the growth of other platforms). This includes functionality such as:
- A wide range of complex product types: configurable (variations, e.g. clothing in varying sizes/colours), grouped (simple sets), bundle (complex build your products) and downloadable (e.g. files)
- Support for unlimited product attributes which can be managed within different groups and sets
- Powerful layered navigation (product filtering)
- Support for complex pricing (sale prices, tiered and per customer group pricing)
- Highly flexible tax (VAT) configuration and support for multiple currencies
- Promotions, including coupon codes, configurable based on a wide array of rules
- A robust API layer for integrations with other systems and building 'headless' storefronts (such as PWAs)
- Stock inventory management, including managing and aggregating from multiple sources (warehouses)
- Product image gallery with video support
- Product relations, wish lists (saved items), comparison tool and customer reviews
- Content management of pages, blocks (reusable content areas) and widgets that can be placed almost anywhere on the storefront
- Newsletter signup and subscription management
- A wide range of SEO tools including URL rewrites (SEO friendly URLs), search terms, analytics and more
- Multiple address checkout
- The ability to part invoice (pay), ship and refund orders
- Catalog(ue) and customer import and export tools
- Inbuilt caching and indexing mechanisms to help speed up storefront performance
- Finely grained admin user roles and permissions management
- A range of inbuilt security tools
The Show Stopper: Multi-store
The key or 'killer' feature that generally still sets Magento apart from the competition (though it is 'catching up') is the ability to run true 'multi-store' setups.
This can range from simple variations of the same site to offer content changes (including localisation) and different currencies through to running to completely different branded websites all from the same Magento 2 'instance' (codebase).
Every single part of Magento 2 has been built with the above in mind from the ability to configure nearly any aspect of storefronts discreetly to allowing developers to create custom themes per storefront and ensure all text output is easily translatable between them.
The Hidden Gem: Community/Ecosystem
Not a feature as such and hardly a secret, but Magento's ecosystem can be massively underappreciated/undervalued - the community spirit and following is second to none in the e-commerce space. The amount of collaboration, contribution to the core codebase and documentation, as well as a general willingness to help one another means Magento has a massive following that helps improve and push the product forward like no other platform can.
Magento Open Source Edition
Formerly known as 'Community Edition', this is the free and most widely used of the Magento 2 editions and the one we'll be focusing on throughout the majority of quests here on MageQuest.
Formerly known as 'Enterprise Edition', this is the paid-for version of Magento 2 and only available to merchants with a licence or solution and technology partners.
It contains many more features not available in Open Source as well as a support service from Magento.
Magento Commerce Cloud
Formerly known as 'Enterprise Cloud Edition', this is an identical product offering as Magento Commerce, except it is bundled with Magento's own managed AWS hosting offering.
Magento Commerce For B2B
B2B stands for Business To Business and as its name suggests offers a further set of functionality aimed at merchants that sell directly to other businesses, rather than to end consumers.
While it is marketed as a separate 'edition', it is just a further add-on to Magento Commerce (or Commerce Cloud).
Languages & Frameworks
While the primary language of the Magento codebase is PHP, many other languages and frameworks are utilised:
- Zend Framework
- Symfony Components (such as the Console component for powering the CLI tool)
- Composer (for installation and managing dependencies)
- jQuery / jQuery UI
- XML powers almost all the configuration files as well as frontend page layout in Magento
*there is also an open source, community-powered SASS based theme available from the awesome people at Snowdog.
Persistent Storage (Database)
- MySQL (or MariaDB / Percona)
- Varnish (for full page cache only)
- Magento 2 is a highly flexible and extensible open source e-commerce platform
- It has many features out the box, and its multi-store capabilities set it apart from its competition
- There are multiple editions of Magento, including the paid for Commerce and Commerce Cloud (hosted) editions as well as a B2B suite
- Magento 2 is mostly written in PHP, with a large dose of XML and utilises MySQL for its database
- On the frontend, jQuery and KnockoutJS are utilised, and stylesheets are powered using LESS