DEV Community

Aimeos
Aimeos

Posted on

A working Laravel shop in five minutes with Aimeos

Adding a shop to a Laravel app usually turns into a quarter of work. You pick a cart library, bolt on a payment gateway, build an admin panel nobody asked to build, then discover your product model can't handle variants, bundles or tier prices without a rewrite. The ecommerce part eats the schedule; the Laravel part was never the problem.

Aimeos takes the opposite route. It's a Laravel package that brings the storefront, the admin backend, a JSON:API for the frontend, a GraphQL API for administration, and a product model built for variants, bundles, subscriptions and block pricing. You install it the way you install anything else in Laravel, and you have a running shop before your coffee is cold.

Here's the part people don't believe until they run it: the full setup is about five minutes. Two paths, depending on whether you're starting fresh or extending an app you already have.

Path one: a standalone shop

If you don't have an app yet, the distribution wires everything up for you. You need PHP 8.2+ and a database (MySQL, MariaDB, PostgreSQL or SQL Server).

composer create-project aimeos/aimeos myshop
Enter fullscreen mode Exit fullscreen mode

During install it asks for your database credentials, your mail settings, and the email and password for the admin account. It runs the schema setup and seeds demo data as part of the same step, so when it finishes you have a populated catalog, not an empty shell.

Start it with the built-in server to look around:

cd myshop
php artisan serve
Enter fullscreen mode Exit fullscreen mode

The storefront is at http://127.0.0.1:8000 and the admin backend at http://127.0.0.1:8000/admin. Log in with the account you just created. Catalog, baskets, checkout, orders and the dashboard are already there.

For hosting, point your vhost document root at myshop/public/ and set APP_URL in .env to your domain. That's the only deployment-specific change.

Path two: into an existing Laravel app

Already have an app and want a shop inside it? Require the package:

composer require aimeos/aimeos-laravel:~2025.10
Enter fullscreen mode Exit fullscreen mode

Publish the config and assets, run the migration, and let Aimeos set up its tables:

php artisan vendor:publish --tag=config --tag=public
php artisan migrate
php artisan aimeos:setup
Enter fullscreen mode Exit fullscreen mode

Append --option=setup/default/demo:1 to aimeos:setup if you want demo data to click through; leave it off in production.

Create a superuser for the backend:

php artisan aimeos:account --super you@example.com
Enter fullscreen mode Exit fullscreen mode

It prompts for a password. The shop now lives under your app's routes, sharing the same Laravel session, auth and config. The frontend renders at / and the admin at /admin, alongside whatever your app already serves.

What you actually get

The install is short because the package isn't a starting point you finish writing — it's the finished thing, built to be customized rather than completed. Out of the box:

  • A storefront with catalog filters, search, basket, multi-step checkout and customer accounts.
  • A full admin backend with a dashboard for products, orders, customers, pricing and marketing.
  • A JSON:API following jsonapi.org for the frontend, so you can drop the bundled views and drive it from React, Vue or a native app.
  • A GraphQL API for administration if you'd rather manage data programmatically.
  • A product model that handles variants, bundles, vouchers, virtual and configurable products, plus subscriptions with recurring payments and block/tier pricing — without schema surgery.
  • Over 100 payment gateway integrations through Omnipay.
  • Multi-language routing, multi-vendor and multi-warehouse support, translated into 30+ languages.

It's designed to stay fast as the catalog grows, from a handful of products into the millions, which is the part that usually decides whether a shop survives its second year.

Customizing without forking

Every layer is replaceable through Laravel's own conventions. Configuration lives in config/shop.php. Templates are standard Blade views you override by copying them into resources/views/vendor/shop/. Business logic sits in decorators you register in config, so you change behavior by wrapping it, not by editing vendor code that the next update would overwrite. Turn on multi-language routing, multi-vendor mode or self-registration for sellers with a single .env flag each:

SHOP_MULTILOCALE=true
SHOP_MULTISHOP=true
SHOP_REGISTRATION=true
Enter fullscreen mode Exit fullscreen mode

Try it

The honest test is to run it yourself rather than take the word count on faith. composer create-project aimeos/aimeos myshop, answer the prompts, php artisan serve, and open the browser. If you want to see the result first, the frontend demo and admin demo are live.

Docs are at aimeos.org/docs/latest/laravel, and if you're building a headless or PWA frontend, the Aimeos headless distribution ships API-only with JWT auth already configured.

Five minutes to a working shop. The rest of the quarter is yours to spend on the parts that make it yours.

Top comments (0)