Five minutes to install, four config files to actually understand
Symfony e-commerce bundle for professional, ultra fast online shops, complex B2B applications and #gigacommerce
At a glance
- What is it?
- aimeos-symfony is a composer bundle that adds a full Aimeos shop to an existing Symfony application, and the gap between the five-minute claim in the readme and the four configuration files it then walks through is the story here. Security ordering, a customer manager that has to be pointed at your user entity, and database setup running from composer scripts are the parts that decide whether the install goes smoothly.
- Who is it for?
- Adopt aimeos-symfony if you already run Symfony and want a full-featured shop with a B2B-capable admin interface without writing controllers, because the bundle brings routing, a customer entity, a security firewall and a demo catalog rather than a set of helpers you assemble.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 63 days ago.
- What is it written in?
- Mainly CSS, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 20, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The readme promises five minutes, then asks for four files
The opening claim is that the package installs in an existing Symfony application within five minutes and that anything can be adapted, extended, overwritten and customised. The installation section that follows is where the gap appears. There is a scaffold command for the case where you have no application yet, and then four separate configuration concerns that each get their own file: the FOSUserBundle settings, the Aimeos shop settings for authentication, two routing files, and database configuration in both a doctrine file and an environment file. Plus a security file that the readme calls the most complex part. So the honest reading is that the mechanical install is quick, because composer scripts do the heavy lifting, and the conceptual install takes longer because you are being handed opinions about user management, firewall structure and storage paths. That is a normal shape for a bundle and not a criticism of it, but it does mean the five minutes is the time to a running page rather than the time to a shop you can safely edit. If you are evaluating this, budget an afternoon.
The customer manager is the setting that decides whether login works
Authentication is the part the readme spends most of its words on, and the mechanism is a swap rather than an addition. The FOSUserBundle configuration sets a database driver, names a user class belonging to the bundle, names a firewall, and sets a noop mailer for the bundle's mailer service:
fos_user:
db_driver: orm
user_class: Aimeos\ShopBundle\Entity\FosUser
firewall_name: aimeos_myaccountThen the Aimeos side has to be told about it. The readme says three things matter: the correct customer manager implementation, the password encryption method, and the right storage paths. All must be appended at the end of the shop configuration file, and the shape of that is a customer manager named FosUser with a password scheme named Bcrypt:
mshop:
customer:
manager:
name: FosUser
password:
name: BcryptThe word appended matters more than it looks. Aimeos configurations are merged and later blocks override earlier ones, so an append is an override, and a developer who adds a customer block in the middle of the file will find their settings silently ignored. The Bcrypt choice also has to agree with the security file, which configures a password hasher for that same entity class. Two files, one entity class, three consistent settings. If login fails after a clean install, this is where to look first, and the readme's own framing, that authentication must be configured correctly for the components to work, is the confirmation that getting it wrong is expected rather than exceptional.
Composer runs the database setup, and installs demo data by default
The package hooks itself into composer's lifecycle rather than asking you to run a migration command by hand. The composer configuration adds a require block for the bundle and the user bundle, and a scripts block that registers two post-install and post-update commands, both of which call into the bundle's own script handler:
"post-install-cmd": [
"Aimeos\\ShopBundle\\Composer\\ScriptHandler::installBundle",
"Aimeos\\ShopBundle\\Composer\\ScriptHandler::setupDatabase",Two consequences follow. First, the same pair runs on every update, not just the first install, which means a dependency update also rewrites your database schema and reinstalls the bundle assets, and that is a behaviour to know about before running an update in an environment where those writes are not wanted. Second, and more important for anyone deploying this, the default path installs demo data. The readme is explicit that in a production environment, or if you do not want the demo data installed, you use the no-dev form:
SYMFONY_ENV=prod composer update --no-devThat line is the difference between a shop full of sample products and an empty one, and getting it wrong is the kind of mistake that is only visible after launch. The readme also flags that a SensioGeneratorBundle exception can appear on the no-dev path and sends you to a forum post for the fix, which is a small admission that the production install route is not entirely self-contained. For a quick look without a web server, the documented shortcut is PHP's built-in server against the public directory, and the catalog list page is then reachable on the shop path of that local address.
Two firewalls, and an access control list whose order is a security property
Admin access is a matter of Symfony firewall configuration, and the readme warns in bold that the order of the settings is important. The structure is two firewalls. One is named aimeos_admin, matches paths beginning with admin, and does a form login against a login path of admin with a check path of admin_check. The other is named aimeos_myaccount, matches every path, and does the form login for customers with a CSRF token manager and logout enabled. Underneath, access control rules grant anonymous access to login, register and resetting, require a user role for profile, and require either an admin role or a super admin role for anything under admin. The order dependency is not a documentation quirk, it is how Symfony resolves matching. Access control is evaluated in order, so a permissive rule placed before a restrictive one swallows the later rule, and the login and register entries have to be reachable by people who are not yet authenticated. If you add your own rule, insert it in the right place rather than at the bottom. The same ordering care applies to the firewalls themselves, since the admin pattern has to be declared before the catch-all or the customer firewall will claim those paths first.
The version story: a 2023.10 line, a 6.3 target, and a 4.4 scaffold
Read the version statements together and they form a picture worth pausing on. The installation document states it covers the latest Aimeos 2023.10 and Symfony 6.3 or later. The require block pins the bundle to about 2023.10, which is a loose constraint inside that release family. The user bundle is pinned with a caret to version 3.2 or later. And the scaffold command for creating a new application names a 4.4 skeleton, which is a substantially older Symfony than the document targets. Those statements are not necessarily contradictory, since a 4.4 application can be migrated forward and the bundle may support more than one, but the readme does not reconcile them, and a developer starting from zero following the commands literally would end up on a different major version than the one the document is written for. There is an upgrade guide linked for moving between major versions, which tells you the project expects a non-trivial upgrade path, and the readme is truncated before the hints and licence sections, so the advice it eventually offers is not visible here. What is visible: the repository publishes no GitHub releases, so there is no tag to pin, the last push to the master branch was on 2026-07-29, and the licence is MIT.
Where it sits: a rendered bundle, and the headless question the topics hint at
The repository is tagged with a json-api topic alongside b2b, marketplace and performance, and that tag points at a question the readme does not answer. Everything the installation section documents is a server-rendered bundle: routes imported from the bundle's own routing file, a customer firewall with form login, an admin interface behind a path prefix, and templates for the storefront. That is a complete shop with an admin, delivered as one application. A headless architecture is a different approach entirely, where the storefront is a separate front end consuming an API and the back office stays a traditional server-rendered application. The bundle's strengths sit on the second side of that line, because the admin interface, the FOSUser integration and the firewall structure are the reason to take it. The topic tag suggests the data can be reached another way, and a headless deployment is worth investigating if your front end is already decoupled, but the readme documents no JSON API surface, no auth scheme for a machine client, and no instructions for running the bundle as an API-only service, so those questions go to the documentation site. The pragmatic middle is to adopt the bundle for the admin and catalogue management and let it render the storefront, which is what the documented path produces.
Editorial conclusion
Adopt aimeos-symfony if you already run Symfony and want a full-featured shop with a B2B-capable admin interface without writing controllers, because the bundle brings routing, a customer entity, a security firewall and a demo catalog rather than a set of helpers you assemble. Do not adopt it if your application is not Symfony, since the readme documents no other framework path, and think twice if you are starting from scratch, because the documented skeleton command pins an old application version while the document itself targets a current one. Four things to verify before you install. That your Symfony version matches the stated target, since the document says it covers Aimeos 2023.10 and Symfony 6.3 or later while the scaffold command still names a 4.4 skeleton. That you are comfortable appending blocks to configuration files rather than replacing them, since the readme says all Aimeos settings must be appended at the end of the shop configuration. That the security file's ordering is preserved, which the readme flags as important in bold. And that a production install uses the no-dev form of the update command, because the default path installs demo data. The licence is MIT, the last push was on 2026-07-29, and there are no published GitHub releases to pin against.
Frequently asked questions
How do I install the Aimeos Symfony bundle?
Add aimeos/aimeos-symfony to the require block of your composer.json, register the bundle's installBundle and setupDatabase handlers as post-install and post-update scripts, then run composer update. The readme documents this for Aimeos 2023.10 and Symfony 6.3 or later.
How do I keep demo data out of a production install?
Run the update with the environment set to prod and the no-dev option, as in SYMFONY_ENV=prod composer update --no-dev. The readme notes that the default path installs the demo data.
What has to be configured for customer login to work?
Three things on the Aimeos side: the customer manager implementation set to FosUser, the password method set to Bcrypt, and the correct storage paths. All of them must be appended at the end of the shop configuration file, alongside a FOSUserBundle configuration naming the bundle's user class and the aimeos_myaccount firewall.
How is the admin interface protected?
Through a Symfony firewall named aimeos_admin matching paths beginning with admin, with form login, and access control rules requiring ROLE_ADMIN or ROLE_SUPER_ADMIN. The readme states in bold that the order of the settings in the security file is important.
What licence is aimeos-symfony released under?
MIT. The repository publishes no GitHub releases, and the last push to the master branch was on 2026-07-29, so the composer constraint rather than a tag is what identifies a version.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/aimeos-aimeos-symfony)