PHPackages                             pictastudio/venditio - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. pictastudio/venditio

ActiveLibrary

pictastudio/venditio
====================

ecommerce package

v2.0.3(2mo ago)138[2 PRs](https://github.com/pictastudio/venditio/pulls)MITPHPPHP ^8.4CI passing

Since Mar 12Pushed 1mo ago2 watchersCompare

[ Source](https://github.com/pictastudio/venditio)[ Packagist](https://packagist.org/packages/pictastudio/venditio)[ Docs](https://github.com/pictastudio/venditio)[ GitHub Sponsors]()[ RSS](/packages/pictastudio-venditio/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (43)Versions (46)Used By (0)

Venditio Ecommerce
==================

[](#venditio-ecommerce)

[![Latest Version on Packagist](https://camo.githubusercontent.com/dba789aa33aab384b3b577339fd70b4df908e38b57f3d2424bc482713a8fb1b6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f706963746173747564696f2f76656e646974696f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/pictastudio/venditio)[![GitHub Tests Action Status](https://camo.githubusercontent.com/c462e395dedcf47698f588bc0d7f5f5bd8fab27f6ca25ce3b3f3ae45909252f4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f706963746173747564696f2f76656e646974696f2f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/pictastudio/venditio/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/782b71605f34c3754a1821b95f0487b1bc68f5ab2206d333362d54df75775269/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f706963746173747564696f2f76656e646974696f2f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/pictastudio/venditio/actions?query=workflow%3A)[![Total Downloads](https://camo.githubusercontent.com/2c6c0db2ee70bee1598381509b219fcd0763c4787b8bbfc0504005e248c623f4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f706963746173747564696f2f76656e646974696f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/pictastudio/venditio)

Venditio is a headless ecommerce package for Laravel. It provides API-only ecommerce primitives while host applications own auth, frontend, and rendering.

Installation
------------

[](#installation)

```
composer require pictastudio/venditio
```

### Install Venditio

[](#install-venditio)

```
php artisan venditio:install
```

Documentation
-------------

[](#documentation)

- Architecture: `docs/ARCHITECTURE.md`
- API reference: `docs/API.md`
- Database schema (DBML): `database.dbml`

Product Variants Model
----------------------

[](#product-variants-model)

Venditio models variants using a parent/child product strategy:

- A base product is a row in `products` with `parent_id = null`
- Each purchasable variant is another row in `products` with `parent_id` set to the base product id
- Variant axes live in `product_variants` (for example `Color`, `Size`)
- Axis values live in `product_variant_options` (for example `Red`, `M`)
- Assigned option values for each variant product are stored in `product_configuration`

This keeps a single product identity while still allowing independent SKU/inventory/pricing per concrete variant.

Configuration
-------------

[](#configuration)

All behavior is configured through `config/venditio.php`.

### Key sections

[](#key-sections)

- `routes.api`: route enable/prefix/name/middleware/pagination and resource wrapping
- `models`: model overrides (all package models are replaceable)
- `validations`: validation contract to implementation bindings
- `authorize_using_policies`: optional policy/gate authorization
- `price_lists`: optional multi-price feature
- `discounts`: discount calculator/bindings/rules configuration
- `product`: product enums, sku generator and product list variant visibility defaults
- `product_variants`: variant naming/copy behavior

### User model and auth integration

[](#user-model-and-auth-integration)

Authentication is not enforced by default. If your host app uses Sanctum, add `HasApiTokens` to your user model and point the package user model config to it:

```
namespace App\Models;

use Laravel\Sanctum\HasApiTokens;
use PictaStudio\Venditio\Models\User as VenditioUser;

class User extends VenditioUser
{
    use HasApiTokens;
}
```

```
'models' => [
    // ...
    'user' => App\Models\User::class,
],
```

### Optional policy integration

[](#optional-policy-integration)

Register policies in the host app and keep `venditio.authorize_using_policies` enabled:

```
use App\Models\Product;
use App\Policies\ProductPolicy;
use Illuminate\Support\Facades\Gate;

public function boot(): void
{
    Gate::policy(Product::class, ProductPolicy::class);
}
```

Controllers call authorization only when enabled and when a policy/gate definition exists.

### Validation customization

[](#validation-customization)

Validation rules are resolved from contracts in `config('venditio.validations')`. Override a resource by rebinding its contract to your implementation.

```
use App\Validations\AddressValidation;
use PictaStudio\Venditio\Validations\Contracts\AddressValidationRules;

public function boot(): void
{
    $this->app->singleton(AddressValidationRules::class, AddressValidation::class);
}
```

### Identifier generator customization

[](#identifier-generator-customization)

```
use PictaStudio\Venditio\Contracts\CartIdentifierGeneratorInterface;
use PictaStudio\Venditio\Contracts\OrderIdentifierGeneratorInterface;

$this->app->singleton(CartIdentifierGeneratorInterface::class, App\Generators\CartIdentifierGenerator::class);
$this->app->singleton(OrderIdentifierGeneratorInterface::class, App\Generators\OrderIdentifierGenerator::class);
```

Commands
--------

[](#commands)

### Release stock for abandoned carts

[](#release-stock-for-abandoned-carts)

Enabled by default and configurable from:

- `venditio.commands.release_stock_for_abandoned_carts.enabled`
- `venditio.commands.release_stock_for_abandoned_carts.inactive_for_minutes`
- `venditio.commands.release_stock_for_abandoned_carts.schedule_every_minutes`

### Publish Bruno collection

[](#publish-bruno-collection)

```
php artisan vendor:publish --tag=venditio-bruno
```

High-level structure
--------------------

[](#high-level-structure)

```
src/
|--- Actions
|--- Contracts
|--- Discounts
|--- Dto
|--- Enums
|--- Http
|--- Models
|--- Pipelines
|--- Pricing
|--- Validations

```

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Picta Studio](https://github.com/pictastudio)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

49

—

FairBetter than 95% of packages

Maintenance89

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity71

Established project with proven stability

 Bus Factor1

Top contributor holds 94.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~21 days

Recently: every ~1 days

Total

35

Last Release

62d ago

Major Versions

v0.1.9 → 1.x-dev2025-08-28

v1.6.2 → v2.0.02026-03-13

PHP version history (2 changes)v0.1.0PHP ^8.1

v1.0.0PHP ^8.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/871c609368b67370ee8c9a0e1077d94ece3b358ee39703a5bdae118c0159f1b1?d=identicon)[pictastudio](/maintainers/pictastudio)

---

Top Contributors

[![Frameck](https://avatars.githubusercontent.com/u/77396783?v=4)](https://github.com/Frameck "Frameck (162 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (6 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (3 commits)")[![pictastudio](https://avatars.githubusercontent.com/u/160235317?v=4)](https://github.com/pictastudio "pictastudio (1 commits)")

---

Tags

laravelPicta Studiovenditio

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/pictastudio-venditio/health.svg)

```
[![Health](https://phpackages.com/badges/pictastudio-venditio/health.svg)](https://phpackages.com/packages/pictastudio-venditio)
```

###  Alternatives

[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[vormkracht10/laravel-mails

Laravel Mails can collect everything you might want to track about the mails that has been sent by your Laravel app.

24149.7k](/packages/vormkracht10-laravel-mails)[fleetbase/core-api

Core Framework and Resources for Fleetbase API

1225.0k10](/packages/fleetbase-core-api)[binary-cats/laravel-rbac

Laravel enum-backed RBAC extension of spatie/laravel-permission

7730.4k](/packages/binary-cats-laravel-rbac)[jacobtims/filament-logger

Activity logger for filament

1721.0k4](/packages/jacobtims-filament-logger)[mradder/filament-logger

Audit logging, activity tracking, exports, alerts, and dashboards for Filament admin panels.

141.1k](/packages/mradder-filament-logger)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
