meubleo/shop

E-commerce platform for furniture shops — admin panel, catalog, cart, orders and Stripe payments for your Laravel app.

Maintainers

Package info

github.com/Leo-76/meubleo-v2-2

Homepage

Issues

Documentation

pkg:composer/meubleo/shop

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

1.0.0 2026-04-16 21:23 UTC

This package is not auto-updated.

Last update: 2026-04-17 19:47:22 UTC


README

Latest Version on Packagist PHP License

Features

Feature Description
Screen-based admin Each admin page is a Screen class with query(), commandBar(), layout()
Fluent Field API Input::make('name')->title('Name')->required()->placeholder('...')
Table/Rows Layouts TD::make('price')->sort()->alignRight()->render(fn($p) => ...)
Full e-commerce Catalogue, cart, Stripe checkout, order management
Multi-ServiceProvider FoundationServiceProvider → chains console, routes, platform providers
Artisan commands meubleo:install, meubleo:admin, meubleo:screen, meubleo:table, meubleo:rows, meubleo:filter
Publishable stubs Screens, Layouts, Filters published to app/Meubleo/
i18n ready JSON translation files in resources/lang/

Installation

composer require meubleo/shop
php artisan meubleo:install

That's it. meubleo:install will:

  1. Publish config, migrations, stubs and assets
  2. Run php artisan migrate
  3. Run php artisan storage:link

Then create an admin user:

php artisan meubleo:admin
# or with arguments:
php artisan meubleo:admin "John Doe" john@example.com secret123

Configuration

After install, edit config/meubleo.php:

return [
    'prefix'   => 'admin',          // Admin URL prefix
    'provider' => \App\Meubleo\MeubleoServiceProvider::class,
    'shop_name' => 'My Shop',
    'tax_rate'  => 0.20,
    'free_shipping_threshold' => 500,
    'shipping_cost'           => 29.90,
    'stripe' => [
        'key'    => env('STRIPE_KEY'),
        'secret' => env('STRIPE_SECRET'),
    ],
];

Screen pattern

Create a screen:

php artisan meubleo:screen ProductListScreen
// app/Meubleo/Screens/ProductListScreen.php
class ProductListScreen extends Screen
{
    public function query(): iterable
    {
        return ['products' => Product::paginate(20)];
    }

    public function commandBar(): iterable
    {
        return [
            Link::make('New')->icon('bs.plus')->route('meubleo.admin.products.create'),
        ];
    }

    public function layout(): iterable
    {
        return [ProductTableLayout::class];
    }
}

Table layout

php artisan meubleo:table ProductTableLayout
class ProductTableLayout extends Table
{
    protected string $target = 'products';

    protected function columns(): iterable
    {
        return [
            TD::make('name', 'Product')->sort(),
            TD::make('price', 'Price')
                ->alignRight()
                ->render(fn($p) => meubleo_price($p->price)),
            TD::make('stock', 'Stock')
                ->render(fn($p) => '<span class="badge bg-success">'.$p->stock.'</span>'),
        ];
    }
}

Rows layout (forms)

php artisan meubleo:rows ProductFormLayout
class ProductFormLayout extends Rows
{
    protected function fields(): iterable
    {
        return [
            Input::make('product.name')->title('Name')->required(),
            Select::make('product.category_id')
                ->fromModel(Category::class, 'name')
                ->title('Category'),
            Input::make('product.price')->title('Price')->type('number'),
            Switcher::make('product.is_featured')->title('Featured'),
        ];
    }
}

Artisan commands

Command Description
meubleo:install Full installation (publish + migrate)
meubleo:admin [name] [email] [password] Create/update admin user
meubleo:screen ClassName Generate a Screen class
meubleo:table ClassName Generate a Table Layout
meubleo:rows ClassName Generate a Rows Layout
meubleo:filter ClassName Generate a Filter class
meubleo:publish [--config|--views|--assets|--migrations|--stubs] Publish specific assets

Package structure

src/
├── Platform/
│   ├── Shop.php                      ← Central singleton registry
│   ├── MeubleoServiceProvider.php    ← Abstract provider to extend
│   ├── Providers/
│   │   ├── FoundationServiceProvider ← Auto-discovered entry point
│   │   ├── ConsoleServiceProvider    ← Artisan commands + publish tags
│   │   ├── RouteServiceProvider      ← Loads routes
│   │   └── PlatformServiceProvider   ← Loads user's provider
│   ├── Commands/                     ← meubleo:install, screen, table…
│   ├── Http/
│   │   ├── Controllers/              ← Shop + Cart + Checkout + Orders
│   │   ├── Screens/                  ← DashboardScreen, ProductListScreen…
│   │   ├── Layouts/                  ← ProductTableLayout, ProductFormLayout
│   │   └── Middleware/AdminMiddleware
│   ├── Models/                       ← Product, Category, Order… (meubleo_* tables)
│   └── Services/                     ← CartService, OrderService
├── Screen/
│   ├── Screen.php                    ← Abstract base screen
│   ├── Field.php                     ← Abstract field with fluent API
│   ├── Layout.php, TD.php, Action.php
│   ├── Fields/    Input, Select, TextArea, Switcher, Password, DateTimer…
│   ├── Layouts/   Table, Rows (abstract)
│   └── Actions/   Button, Link, Menu
├── Filters/Filter.php
└── Support/
    ├── Toast.php
    ├── helpers.php                   ← toast(), meubleo_price(), meubleo_prefix()
    └── Facades/  Shop, Cart

stubs/app/Meubleo/               ← Published to app/Meubleo/ on install
    MeubleoServiceProvider.php
    Screens/Product/ProductListScreen.php
    Layouts/Product/ProductTableLayout.php
    Filters/ProductNameFilter.php
    routes/meubleo.php

Stripe test card

4242 4242 4242 4242 — any future date, any CVV.

License

MIT