Paket dokümantasyonu
SatisHub
Sell private Composer packages with license-based access control and FilamentPHP.
Installation
This package requires a valid license to use. You can get your license here: SatisHub
To install you'll need to add the repository to your composer.json file:
{
"repositories": [
{
"type": "composer",
"url": "https://satis.afsakar.com"
}
]
}
Once the repository has been added to the composer.json file, you can install SatisHub like any other composer package using the composer require command:
composer require afsakar/satishub
You will be prompted to provide your username and password. The username will be the email address and the password will be equal to your license key.
Loading composer repositories with package information
Authentication required (satis.afsakar.com):
Username: [license-email]
Password: [license-key]
Next, add the plugin's views to your custom theme in your theme.css file:
@source '../../../../vendor/afsakar/satishub/resources/views/**/*.blade.php';
@source '../../../../vendor/afsakar/satishub/src/**/*.php';
Afterward, run npm run build or yarn build to compile assets.
Install via Composer
composer require afsakar/satishub
The package provider is auto-discovered.
Publish Configuration
php artisan vendor:publish --tag=satishub-config
This publishes config/satishub.php to the host app.
Run Migrations
php artisan migrate
Register Required Middleware Alias
In bootstrap/app.php:
$middleware->alias([
'repo.auth' => \Afsakar\Satishub\Http\Middleware\AuthenticateComposerBasicAuth::class,
]);
Without this alias, private repository routes cannot authenticate Composer clients.
Register Filament Plugin
In your panel provider:
->plugin(\Afsakar\Satishub\Filament\SatisPlugin::make())
First Boot Checklist
- Create at least one Package and Product in admin.
- Add provider mapping(s) for external price/product IDs.
- Configure webhook endpoint in your provider dashboard.
- Run initial catalog sync in dry-run mode.
Customer Composer Setup Example
Your customer typically adds your repository URL and credentials (license key + buyer email).
composer.json example:
{
"repositories": [
{
"type": "composer",
"url": "https://your-domain.test/repo"
}
]
}
auth.json example:
{
"http-basic": {
"your-domain.test": {
"username": "LIC-XXXX-XXXX",
"password": "[email protected]"
}
}
}
Order of license/email can be flexible in auth parsing, but this format is recommended.

