webprog/shop

Laravel package for an abstract online store with CRUD, currency rates and delivery calculation

Maintainers

Package info

github.com/mercY-f/shop

pkg:composer/webprog/shop

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

dev-main 2026-04-09 10:53 UTC

This package is auto-updated.

Last update: 2026-04-09 11:06:42 UTC


README

Laravel-пакет для абстрактного интернет-магазина.

Установка

composer require webprog/shop

Публикация ресурсов

# Конфигурация
php artisan vendor:publish --tag=shop-config

# Blade-шаблоны
php artisan vendor:publish --tag=shop-views

# Миграции
php artisan vendor:publish --tag=shop-migrations

php artisan migrate
php artisan db:seed --class="Webprog\Shop\Database\Seeders\ShopDatabaseSeeder"

Конфигурация (.env)

SHOP_ROUTE_PREFIX=shop
SHOP_CURRENCY_BASE=USD
SHOP_DELIVERY_SERVICE=haversine   # haversine | openroute | mapbox
SHOP_DELIVERY_RATE_PER_KM=0.5
OPENROUTE_API_KEY=
MAPBOX_API_KEY=

Маршруты

Маршруты подключаются автоматически из пакета (не публикуются).

Метод URI Действие
GET /shop/products index
GET /shop/products/create create
POST /shop/products store
GET /shop/products/{id} show
GET /shop/products/{id}/edit edit
PUT /shop/products/{id} update
DELETE /shop/products/{id} destroy

Аналогично для: categories, suppliers, customers, warehouses, orders.

Фасад CurrencyRate

use Webprog\Shop\Facades\CurrencyRate;

$rate = CurrencyRate::get('EUR');           // float: курс EUR к USD
$amount = CurrencyRate::convert(100, 'EUR'); // float: 100 USD в EUR
$rates = CurrencyRate::getRates();           // array: все курсы
CurrencyRate::clearCache();                  // сбросить кеш

Фасад DeliveryCalculator

use Webprog\Shop\Facades\DeliveryCalculator;

$from = ['lat' => 50.45, 'lng' => 30.52]; // Киев
$to   = ['lat' => 48.46, 'lng' => 35.04]; // Днепр

// Метод из конфига:
$result = DeliveryCalculator::calculate($from, $to);

// Явный выбор метода:
$result = DeliveryCalculator::via('haversine')->calculate($from, $to);
$result = DeliveryCalculator::via('openroute')->calculate($from, $to);
$result = DeliveryCalculator::via('mapbox')->calculate($from, $to);

// $result = ['distance_km' => 477.3, 'cost' => 238.65, 'service' => 'haversine']

Лицензия

MIT