aimeos-symfony is a free, open source e-commerce platforms project written in CSS and released under MIT. It has 1,560 GitHub stars, 54 forks and 0 open issues, and was last pushed 16 days ago. On this registry it ranks #31 of 46 tracked projects in E-commerce Platforms, with 5 head-to-head comparisons available. It gained 6 stars over the last 30 tracked days.

What is aimeos-symfony?

Aimeos Symfony bundle is a composer-installable e-commerce bundle that adds a full shop, B2B application or marketplace backend to an existing Symfony application, built for PHP teams that want to own and extend their storefront code instead of renting a hosted platform.

What it is

The project is the Symfony integration for Aimeos, published on Packagist as aimeos/aimeos-symfony and maintained under the MIT licence. It is not a standalone application but a bundle that drops into a Symfony project, where it registers its own routing, configuration, database setup and admin interface alongside the host application's code. The README documents it against Aimeos 2023.10 and Symfony 6.3+, with a separate upgrade guide for moving between major versions. The bundle is composer-based, so installation and dependency resolution follow the standard Symfony toolchain.

The concrete problem it solves is the cost of wiring a complete commerce stack into Symfony by hand. Instead of assembling catalog, customer, order, admin and API layers separately, the bundle provides them and lets the developer adapt, extend, overwrite or customize any part. It covers business-to-business scenarios and marketplace setups, and it exposes a JSON API, so the same backend can serve storefronts, admin users and external clients. Authentication and customer data are delegated to FOSUserBundle through a configurable customer manager rather than being reimplemented inside the shop.

Key capabilities

  • Installable into an existing Symfony application through Composer with composer require aimeos/aimeos-symfony ~2023.10, plus a skeleton path via composer create-project symfony/website-skeleton:~4.4 myshop.
  • Automated setup hooks in composer.json scripts, including Aimeos\ShopBundle\Composer\ScriptHandler::installBundle and Aimeos\ShopBundle\Composer\ScriptHandler::setupDatabase.
  • Storage configuration in ./config/packages/aimeos_shop.yaml, with an fs resource defined by baseurl and basedir, and an fs-admin resource writing to %kernel.project_dir%/public/uploads.
  • Pluggable customer management: mshop.customer.manager.name set to FosUser and mshop.customer.password.name set to Bcrypt.
  • Routing shipped as importable resources, @AimeosShopBundle/config/routing.yaml and @FOSUserBundle/Resources/config/routing/all.xml, mounted from ./config/routes/.
  • Database configuration through Doctrine and the .env variable DATABASE_URL, with MySQL shown as the default and other supported database servers documented separately.
  • Mail delivery configured through MAILER_URL, including SMTP with TLS, encryption and login authentication for non-Sendmail environments.

Who uses it and how

  • Symfony teams adding commerce to an application they already run, rather than starting a shop from scratch on a separate platform.
  • B2B deployments that need customer accounts, order handling and an admin interface wired into an existing user system through FOSUserBundle.
  • Marketplace and multi-vendor projects, indicated by the marketplace topic alongside the JSON API surface.
  • Performance-sensitive shops, where the README and topics position the package around fast rendering and high request volume.
  • Integrators who need to override bundle behaviour, since the README states that anything can be adapted, extended, overwritten or customized.

Getting started

Install with Composer by adding aimeos/aimeos-symfony at ~2023.10 to an existing Symfony application, or bootstrap a new one with composer create-project symfony/website-skeleton:~4.4 myshop. Then configure ./config/packages/fos_user.yaml, ./config/packages/aimeos_shop.yaml, the routing files under ./config/routes/, the database in .env, and run the bundle's composer scripts.

How it compares

No list of paid products that this project replaces is provided, and no comparable tools are named in the facts. On the evidence available it stands alone in this registry as a Symfony-specific commerce bundle.

When to use it — and when not to

A self-hoster must run a database server (MySQL by default, other supported servers with additional configuration), configure mail delivery through MAILER_URL or Sendmail, and provide filesystem paths for public uploads, so the operational surface is a full Symfony deployment rather than a managed service. Teams that do not already work in Symfony, or that want a hosted store with no server maintenance, are poor fits. The README also shows a symfony/website-skeleton:~4.4 example in the setup commands while stating Symfony 6.3+ support, and the repository metadata lists CSS as the primary language, so the documentation and metadata deserve checking before planning an upgrade path.

project readme (upstream, from github) — read inline
Aimeos logo

Aimeos Symfony bundle

Total Downloads Build Status Coverage Status Scrutinizer Code Quality

:star: Star us on GitHub — it helps!

Aimeos is THE professional, full-featured and ultra fast e-commerce package for Symfony! You can install it in your existing Symfony application within 5 minutes and can adapt, extend, overwrite and customize anything to your needs.

Aimeos Symfony demo

Table of content

Installation

This document is for the latest Aimeos 2023.10 and Symfony 6.3+.

If you want to upgrade between major versions, please have a look into the upgrade guide!

The Aimeos Symfony e-commerce bundle is a composer based library that can be installed easiest by using Composer. If you don't have an existing Symfony application, you can create a skeleton application using

composer create-project symfony/website-skeleton:~4.4 myshop
cd myshop

These settings need to be added to the ./config/packages/fos_user.yaml file:

fos_user:
    db_driver: orm
    user_class: Aimeos\ShopBundle\Entity\FosUser
    firewall_name: aimeos_myaccount
    from_email:
        address: "me@example.com"
        sender_name: "Test shop"
    service:
        mailer: 'fos_user.mailer.noop'

The Aimeos components have to be configured as well to get authentication working correctly. You need to take care of three things: Using the correct customer manager implementation and password encryption method as well as the right path for the storages. All must be appended at the end of the ./config/packages/aimeos_shop.yaml:

aimeos_shop:
    resource:
        fs:
            baseurl: "https://yourdomain.com/"
            basedir: "%kernel.project_dir%/public"
        fs-admin:
            basedir: "%kernel.project_dir%/public/uploads"
    mshop:
        customer:
            manager:
                name: FosUser
                password:
                    name: Bcrypt

To configure the Aimeos routing, create the file ./config/routes/aimeos_shop.yaml with these lines:

aimeos_shop:
    resource: "@AimeosShopBundle/config/routing.yaml"

The same applies for the FosUser bundle. Create the file ./config/routes/fos_user.yaml containing:

fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"

Make sure that the database is set up and it is configured in your ./config/packages/doctrine.yaml:

parameters:
    env(DATABASE_URL): ''
    database_host: <your host/ip>
    database_port: <your port>
    database_name: <your database>
    database_user: <db username>
    database_password: <db password>

Also, you have to configure your database credentials in the .env file:

DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name

If you want to use a database server other than MySQL, please have a look into the article about supported database servers and their specific configuration.

If you don't use Sendmail but SMTP for sending e-mails, you have to adapt the MAILER_URL configuration in your .env file, e.g.:

MAILER_URL=smtp://smtp.mailtrap.io:2525?encryption=tls&auth_mode=login&username=...&password=...

Composer

Then add these lines to your composer.json of your Symfony project:

    "prefer-stable": true,
    "minimum-stability": "dev",
    "require": {
        "aimeos/aimeos-symfony": "~2023.10",
        "friendsofsymfony/user-bundle": "^3.2",
        ...
    },
    "scripts": {
        "post-install-cmd": [
            "Aimeos\\ShopBundle\\Composer\\ScriptHandler::installBundle",
            "Aimeos\\ShopBundle\\Composer\\ScriptHandler::setupDatabase",
            ...
        ],
        "post-update-cmd": [
            "Aimeos\\ShopBundle\\Composer\\ScriptHandler::installBundle",
            "Aimeos\\ShopBundle\\Composer\\ScriptHandler::setupDatabase",
            ...
        ]
    }

Afterwards, install the Aimeos shop bundle using

composer update

In a production environment or if you don't want that the demo data gets installed, use the --no-dev option:

SYMFONY_ENV=prod composer update --no-dev

If you get an exception that the SensioGeneratorBundle isn't found, follow the steps described in the Aimeos Symfony forum post

Start the PHP web server in the base directory of your application to do some quick tests:

php -S 127.0.0.1:8000 -t public

Then, you should be able to call the catalog list page in your browser using

http://127.0.0.1:8000/shop

Login and Admin

Setting up the administration interface is a matter of configuring the Symfony firewall to restrict access to the admin URLs.

Setting up the security configuration is the most complex part. The firewall setup in ./config/packages/security.yaml should look like this one:

security:
    providers:
        aimeos:
            entity: { class: Aimeos\ShopBundle\Entity\FosUser, property: username }

    password_hashers:
        Aimeos\ShopBundle\Entity\FosUser: bcrypt

    firewalls:
        aimeos_admin:
            pattern: ^/admin
            provider: aimeos
            form_login:
                login_path: /admin
                check_path: /admin_check
        aimeos_myaccount:
            pattern: ^/
            form_login:
                provider: aimeos
                csrf_token_manager: security.csrf.token_manager
            logout: true

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/profile, roles: ROLE_USER }
        - { path: ^/admin/.+, roles: [ROLE_ADMIN, ROLE_SUPER_ADMIN] }

Caution: The order of the configuration settings in this file is important!

These settings will protect the /admin/* URLs from unauthorized access from someone without admin privileges.

The /profile URL is protected by the FOS user bundle as well, which also offers user registration.

As last step, you have to create an admin account using the Symfony command line:

./bin/console aimeos:account --admin me@mydomain.com

The e-mail address is the user name for login and the account will work for the frontend too. To protect the new account, the command will ask you for a password. The same command can create limited accounts by using "--editor" instead of "--admin". If you use "--super" the account will have access to all sites.

If the PHP web server is still running (php -S 127.0.0.1:8000 -t public), you should be able to call the admin login page in your browser using

http://127.0.0.1:8000/admin

and authenticating with your e-mail and the password which has been asked for by the aimeos:account command.

Hints

To simplify development, you should configure to use no content cache. You can do this by adding these lines to ./config/packages/aimeos_shop.yaml:

aimeos_shop:
    madmin:
        cache:
            manager:
                name: None

License

The Aimeos Symfony bundle is licensed under the terms of the MIT license and is available for free.

Links

Frequently asked questions

Is aimeos-symfony free to use?

aimeos-symfony is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does aimeos-symfony do?

Symfony e-commerce bundle for professional, ultra fast online shops, complex B2B applications and #gigacommerce

What is aimeos-symfony written in?

aimeos-symfony is primarily written in CSS. Its source is publicly available at https://github.com/aimeos/aimeos-symfony, and it has 1,560 GitHub stars.