De-fork POS chrome/assets and import CRM products only
Deploy Ladill POS / deploy (push) Successful in 32s

Finish removing the upstream platform fork: drop the Hosting/SSL/Domain
notification classes + their mail views, the email/mailbox/domains/hosting
view trees, the Mini/Afia/search/paystack partials and unused components, and
the now-orphan support helpers (DomainConfig, MailboxPricing,
ResellerClubLegacy), SmsService, and fork configs (afia, hosting, domain,
email, mailbox, qr, mail_brands, notifications, ...). Reparent the
notifications page off the hosting layout onto the POS app layout (it had
referenced undefined hosting./mini. routes). Computed the removable set from a
reachability scan of the POS view graph; kept views reference no removed
routes/services.

Branding: favicon now uses the updated favicon.ico (favicon.svg removed);
signed-out fallback logo points at the POS logo.

CRM import: constrain the catalogue pull to type=product so CRM services are
never imported as POS products (server-side filter + defensive client skip).

Test suite green (8 passed, 29 assertions); all routes resolve and every
remaining Blade compiles.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
isaacclad
2026-06-24 00:40:01 +00:00
co-authored by Claude Opus 4.8
parent 46b5091b1e
commit b7c7a32ee6
87 changed files with 34 additions and 5410 deletions
-10
View File
@@ -1,10 +0,0 @@
<?php
return [
// Afia — in-app AI assistant scoped to Ladill Mini.
'product' => env('AFIA_PRODUCT', 'mini'),
'enabled' => (bool) env('AFIA_ENABLED', true),
'provider' => env('AFIA_PROVIDER', 'openai'), // openai | anthropic
'model' => env('AFIA_MODEL', 'gpt-4o-mini'),
'api_key' => env('AFIA_API_KEY'),
];
-25
View File
@@ -1,25 +0,0 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Ladill Mini Android App Links (Digital Asset Links)
|--------------------------------------------------------------------------
|
| Served at /.well-known/assetlinks.json for Android App Link verification.
| Use the App signing certificate SHA-256 from Play Console Setup
| App signing (not the upload key unless you opted out of Play signing).
|
| Multiple fingerprints may be comma-separated in ANDROID_APP_SHA256_FINGERPRINTS.
|
*/
'package_name' => env('ANDROID_APP_PACKAGE', 'com.ladill.mini'),
'sha256_cert_fingerprints' => array_values(array_filter(array_map(
static fn (string $fingerprint): string => strtoupper(trim($fingerprint)),
explode(',', (string) env('ANDROID_APP_SHA256_FINGERPRINTS', '')),
))),
];
-6
View File
@@ -1,6 +0,0 @@
<?php
return [
'api_url' => env('DOMAIN_API_URL', 'https://ladill.com/api/domains'),
'api_key' => env('DOMAIN_API_KEY_HOSTING'),
];
-21
View File
@@ -1,21 +0,0 @@
<?php
return [
/*
| Email product plans. Mailboxes are priced purely by the storage tier chosen
| at creation (and changeable later via Upgrade). The 1 GB tier is FREE,
| forever, for every mailbox; larger tiers are billed monthly from the one
| Ladill wallet (§4-A). Money is in minor units (pesewas).
*/
'currency' => env('EMAIL_CURRENCY', 'GHS'),
'default_quota_mb' => (int) env('EMAIL_DEFAULT_QUOTA_MB', 1024), // new mailboxes start on the free 1 GB tier
// Storage tiers: quota (MB) → monthly price (minor units). 1 GB is free.
'quota_tiers' => [
['mb' => 1024, 'price_minor' => 0], // 1 GB — Free forever
['mb' => 5120, 'price_minor' => 1000], // 5 GB — GHS 10
['mb' => 10240, 'price_minor' => 2000], // 10 GB — GHS 20
['mb' => 25600, 'price_minor' => 3000], // 25 GB — GHS 30
['mb' => 51200, 'price_minor' => 6000], // 50 GB — GHS 60
],
];
-7
View File
@@ -1,7 +0,0 @@
<?php
return [
// Consumer config for the shared Email-Domain verification API (§4-D).
'api_url' => env('EMAILDOMAIN_API_URL', 'https://ladill.com/api/email-domains'),
'api_key' => env('EMAILDOMAIN_API_KEY_EMAIL'),
];
-703
View File
@@ -1,703 +0,0 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Contabo API Configuration
|--------------------------------------------------------------------------
|
| Credentials for the Contabo Compute Management API.
| Used for provisioning VPS and VDS instances.
|
*/
'contabo' => [
'client_id' => env('CONTABO_CLIENT_ID'),
'client_secret' => env('CONTABO_CLIENT_SECRET'),
'api_user' => env('CONTABO_API_USER'),
'api_password' => env('CONTABO_API_PASSWORD'),
'product_catalog_endpoint' => env('CONTABO_PRODUCT_CATALOG_ENDPOINT'),
],
/*
|--------------------------------------------------------------------------
| Pricing Configuration
|--------------------------------------------------------------------------
|
| Dynamic pricing settings for VPS/Dedicated servers.
| Base prices from Contabo are in USD, converted to GHS using exchange rate.
|
*/
'pricing' => [
'base_currency' => 'USD',
'display_currency' => 'GHS',
// Fallback rate used when live API fails
'fallback_usd_to_ghs_rate' => env('FALLBACK_USD_TO_GHS_RATE', 15.50),
// Profit margins (percentage on top of converted Contabo USD price)
'margins' => [
'vps' => env('VPS_PROFIT_MARGIN', 45),
'dedicated' => env('DEDICATED_PROFIT_MARGIN', 30),
],
'contabo_price_cache_ttl' => env('CONTABO_PRICE_CACHE_TTL', 3600),
'term_discounts' => [
'quarterly' => 5,
'semiannual' => 10,
'yearly' => 20,
],
'setup_fee_rules' => [
// VPS 10 only — monthly and semiannual cycles carry a setup fee equal to 1× the monthly price
[
'product_ids' => ['V91'],
'billing_cycles' => ['monthly', 'semiannual'],
'monthly_price_multiplier' => 1,
'label' => 'One-time setup fee',
],
// Dedicated servers — fixed EUR fee that decreases with longer commitment; waived on yearly
[
'product_ids' => ['amd-ryzen-12-cores', 'amd-genoa-24-cores'],
'billing_cycles' => ['monthly', 'quarterly', 'semiannual'],
'fixed_eur_by_cycle' => [
'monthly' => 39.99,
'quarterly' => 29.99,
'semiannual' => 19.99,
],
'label' => 'One-time setup fee',
],
],
// Fallback Contabo base prices in USD. Live API/feed prices are preferred.
// Keep these values as a fail-safe for API downtime.
'contabo_base_prices' => [
'V91' => ['monthly' => 4.99, 'name' => 'Cloud VPS 10 NVMe', 'cpu' => 3, 'ram_gb' => 8, 'disk_gb' => 75],
'V94' => ['monthly' => 7.00, 'name' => 'Cloud VPS 20 NVMe', 'cpu' => 6, 'ram_gb' => 12, 'disk_gb' => 100],
'V97' => ['monthly' => 14.00, 'name' => 'Cloud VPS 30 NVMe', 'cpu' => 8, 'ram_gb' => 24, 'disk_gb' => 200],
'V100' => ['monthly' => 25.00, 'name' => 'Cloud VPS 40 NVMe', 'cpu' => 12, 'ram_gb' => 48, 'disk_gb' => 250],
'amd-ryzen-12-cores' => ['monthly' => 104.64, 'name' => 'AMD Ryzen 12 Cores', 'cpu' => 12, 'ram_gb' => 64, 'disk_gb' => 1000],
'amd-genoa-24-cores' => ['monthly' => 184.21, 'name' => 'AMD Genoa 24 Cores', 'cpu' => 24, 'ram_gb' => 128, 'disk_gb' => 2000],
],
],
/*
|--------------------------------------------------------------------------
| Server Order Options
|--------------------------------------------------------------------------
|
| Surcharges shown here are Contabo-side monthly USD add-on costs before
| the Ladill exchange-rate conversion and product margin are applied.
| Update these values whenever Contabo changes its commercial pricing.
|
*/
'server_order' => [
'regions' => [
'EU' => ['label' => 'Europe (Germany)', 'monthly_usd' => 0.00, 'automated' => true],
'US-central' => ['label' => 'US Central', 'monthly_usd' => 0.00, 'automated' => true],
'US-east' => ['label' => 'US East', 'monthly_usd' => 0.00, 'automated' => true],
'US-west' => ['label' => 'US West', 'monthly_usd' => 0.00, 'automated' => true],
'UK' => ['label' => 'United Kingdom', 'monthly_usd' => 0.00, 'automated' => true],
'SIN' => ['label' => 'Singapore', 'monthly_usd' => 0.00, 'automated' => true],
'AUS' => ['label' => 'Australia', 'monthly_usd' => 0.00, 'automated' => true],
'JPN' => ['label' => 'Japan', 'monthly_usd' => 0.00, 'automated' => true],
],
'image_pricing_rules' => [
[
'key' => 'windows',
'label' => 'Windows Server',
'monthly_usd' => 9.30,
'match' => ['windows'],
'os_family' => 'windows',
'default_user' => 'administrator',
'requires_custom_image_addon' => false,
'automated' => true,
],
[
'key' => 'ubuntu',
'label' => 'Ubuntu',
'monthly_usd' => 0.00,
'match' => ['ubuntu'],
'os_family' => 'linux',
'default_user' => 'root',
'requires_custom_image_addon' => false,
'automated' => true,
],
[
'key' => 'rhel',
'label' => 'RHEL Variants',
'monthly_usd' => 0.00,
'match' => ['alma', 'rocky', 'rhel', 'centos'],
'os_family' => 'linux',
'default_user' => 'root',
'requires_custom_image_addon' => false,
'automated' => true,
],
[
'key' => 'custom',
'label' => 'Custom Images',
'monthly_usd' => 0.00,
'custom_image' => true,
'os_family' => 'linux',
'default_user' => 'root',
'requires_custom_image_addon' => true,
'automated' => true,
],
[
'key' => 'linux',
'label' => 'Linux',
'monthly_usd' => 0.00,
'match' => ['debian', 'fedora', 'linux', 'bsd'],
'os_family' => 'linux',
'default_user' => 'root',
'requires_custom_image_addon' => false,
'automated' => true,
],
],
'fallback_images' => [
[
'value' => 'afecbb85-e2fc-46f0-9684-b46b1faf00bb',
'label' => 'Ubuntu 22.04',
'description' => 'Fallback Ubuntu image',
'os_family' => 'linux',
'monthly_usd' => 0.00,
'default_user' => 'root',
'requires_custom_image_addon' => false,
'automated' => true,
],
],
'managed_stack_supported_images' => [
[
'value' => 'afecbb85-e2fc-46f0-9684-b46b1faf00bb',
'label' => 'Ubuntu 22.04 LTS',
'match' => ['ubuntu 22.04'],
'os_family' => 'linux',
],
[
'label' => 'Ubuntu 24.04 LTS',
'match' => ['ubuntu 24.04'],
'os_family' => 'linux',
],
[
'label' => 'Debian 12',
'match' => ['debian 12', 'bookworm'],
'os_family' => 'linux',
],
[
'label' => 'AlmaLinux',
'match' => ['almalinux', 'alma linux', 'alma'],
'os_family' => 'linux',
],
[
'label' => 'Rocky Linux',
'match' => ['rocky linux', 'rocky'],
'os_family' => 'linux',
],
[
'label' => 'Fedora',
'match' => ['fedora'],
'os_family' => 'linux',
],
[
'label' => 'openSUSE Leap',
'match' => ['opensuse leap', 'open suse leap', 'opensuse', 'leap'],
'os_family' => 'linux',
],
[
'label' => 'CentOS',
'match' => ['centos'],
'os_family' => 'linux',
],
],
'licenses' => [
'none' => [
'label' => 'Remote Login Only',
'description' => 'No hosting panel or commercial control-panel license.',
'monthly_usd' => 0.00,
'license' => null,
'panel' => null,
'automated' => true,
],
'ladill_panel' => [
'label' => 'Ladill Server Manager',
'description' => 'Manage power, status, and server details from the Ladill server manager.',
'monthly_usd' => 0.00,
'license' => null,
'panel' => 'ladill',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'requires_managed_stack_image' => true,
'automated' => true,
],
'plesk_host' => [
'label' => 'Plesk + Linux',
'description' => 'Plesk host edition on Linux.',
'monthly_usd' => 15.00,
'license' => 'PleskHost',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'plesk_windows' => [
'label' => 'Plesk + Windows',
'description' => 'Plesk on Windows Server.',
'monthly_usd' => 22.70,
'license' => 'PleskHost',
'compatible_os_families' => ['windows'],
'requires_image' => true,
'automated' => true,
],
'cpanel_5' => [
'label' => 'cPanel 5',
'description' => 'cPanel license for up to 5 accounts.',
'monthly_usd' => 35.99,
'license' => 'cPanel5',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_30' => [
'label' => 'cPanel 30',
'description' => 'cPanel license for up to 30 accounts.',
'monthly_usd' => 53.99,
'license' => 'cPanel30',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_50' => [
'label' => 'cPanel 50',
'description' => 'cPanel license for up to 50 accounts.',
'monthly_usd' => 53.99 + (0.49 * 20),
'license' => 'cPanel50',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_100' => [
'label' => 'cPanel 100',
'description' => 'cPanel license for up to 100 accounts.',
'monthly_usd' => 69.99,
'license' => 'cPanel100',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_150' => [
'label' => 'cPanel 150',
'description' => 'cPanel license for up to 150 accounts.',
'monthly_usd' => 69.99 + (0.49 * 50),
'license' => 'cPanel150',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_200' => [
'label' => 'cPanel 200',
'description' => 'cPanel license for up to 200 accounts.',
'monthly_usd' => 69.99 + (0.49 * 100),
'license' => 'cPanel200',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_250' => [
'label' => 'cPanel 250',
'description' => 'cPanel license for up to 250 accounts.',
'monthly_usd' => 69.99 + (0.49 * 150),
'license' => 'cPanel250',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_300' => [
'label' => 'cPanel 300',
'description' => 'cPanel license for up to 300 accounts.',
'monthly_usd' => 69.99 + (0.49 * 200),
'license' => 'cPanel300',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_350' => [
'label' => 'cPanel 350',
'description' => 'cPanel license for up to 350 accounts.',
'monthly_usd' => 69.99 + (0.49 * 250),
'license' => 'cPanel350',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_400' => [
'label' => 'cPanel 400',
'description' => 'cPanel license for up to 400 accounts.',
'monthly_usd' => 69.99 + (0.49 * 300),
'license' => 'cPanel400',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_450' => [
'label' => 'cPanel 450',
'description' => 'cPanel license for up to 450 accounts.',
'monthly_usd' => 69.99 + (0.49 * 350),
'license' => 'cPanel450',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_500' => [
'label' => 'cPanel 500',
'description' => 'cPanel license for up to 500 accounts.',
'monthly_usd' => 69.99 + (0.49 * 400),
'license' => 'cPanel500',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_550' => [
'label' => 'cPanel 550',
'description' => 'cPanel license for up to 550 accounts.',
'monthly_usd' => 69.99 + (0.49 * 450),
'license' => 'cPanel550',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_600' => [
'label' => 'cPanel 600',
'description' => 'cPanel license for up to 600 accounts.',
'monthly_usd' => 69.99 + (0.49 * 500),
'license' => 'cPanel600',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_650' => [
'label' => 'cPanel 650',
'description' => 'cPanel license for up to 650 accounts.',
'monthly_usd' => 69.99 + (0.49 * 550),
'license' => 'cPanel650',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_700' => [
'label' => 'cPanel 700',
'description' => 'cPanel license for up to 700 accounts.',
'monthly_usd' => 69.99 + (0.49 * 600),
'license' => 'cPanel700',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_750' => [
'label' => 'cPanel 750',
'description' => 'cPanel license for up to 750 accounts.',
'monthly_usd' => 69.99 + (0.49 * 650),
'license' => 'cPanel750',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_800' => [
'label' => 'cPanel 800',
'description' => 'cPanel license for up to 800 accounts.',
'monthly_usd' => 69.99 + (0.49 * 700),
'license' => 'cPanel800',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_850' => [
'label' => 'cPanel 850',
'description' => 'cPanel license for up to 850 accounts.',
'monthly_usd' => 69.99 + (0.49 * 750),
'license' => 'cPanel850',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_900' => [
'label' => 'cPanel 900',
'description' => 'cPanel license for up to 900 accounts.',
'monthly_usd' => 69.99 + (0.49 * 800),
'license' => 'cPanel900',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_950' => [
'label' => 'cPanel 950',
'description' => 'cPanel license for up to 950 accounts.',
'monthly_usd' => 69.99 + (0.49 * 850),
'license' => 'cPanel950',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_1000' => [
'label' => 'cPanel 1000',
'description' => 'cPanel license for up to 1000 accounts.',
'monthly_usd' => 69.99 + (0.49 * 900),
'license' => 'cPanel1000',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
],
'applications' => [
'none' => [
'label' => 'No Preinstalled App',
'description' => 'Provision the server without an extra preinstalled application.',
'monthly_usd' => 0.00,
'automated' => true,
],
'webmin' => [
'label' => 'Webmin',
'description' => 'Free Webmin server panel installed automatically on Linux.',
'monthly_usd' => 0.00,
'cloud_init_preset' => 'webmin',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'webmin_lamp' => [
'label' => 'Webmin + LAMP',
'description' => 'Free Webmin plus Apache, MariaDB, and PHP on Linux.',
'monthly_usd' => 0.00,
'cloud_init_preset' => 'webmin_lamp',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'ipfs_node' => [
'label' => 'IPFS Node',
'description' => 'Contabo application profile for IPFS nodes.',
'monthly_usd' => 0.00,
'application_id' => env('CONTABO_APP_ID_IPFS_NODE'),
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'flux_node' => [
'label' => 'Flux Node',
'description' => 'Contabo application profile for Flux nodes.',
'monthly_usd' => 0.00,
'application_id' => env('CONTABO_APP_ID_FLUX_NODE'),
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'horizon_node' => [
'label' => 'Horizen Node',
'description' => 'Contabo application profile for Horizen nodes.',
'monthly_usd' => 0.00,
'application_id' => env('CONTABO_APP_ID_HORIZON_NODE'),
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'ethereum_node' => [
'label' => 'Ethereum Node',
'description' => 'Contabo application profile for Ethereum 2.0 nodes.',
'monthly_usd' => 0.00,
'application_id' => null,
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'bitcoin_node' => [
'label' => 'Bitcoin Full Node',
'description' => 'Contabo application profile for Bitcoin full nodes.',
'monthly_usd' => 0.00,
'application_id' => null,
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
],
'additional_ip' => [
'none' => [
'label' => '1 IP Address',
'description' => 'Default primary IP only.',
'monthly_usd' => 0.00,
'add_on' => null,
'automated' => true,
],
'one_extra' => [
'label' => '1 Additional IP',
'description' => 'Adds one extra IPv4 address.',
'monthly_usd' => 4.50,
'add_on' => 'additionalIps',
'automated' => true,
],
],
'private_networking' => [
'disabled' => [
'label' => 'No Private Networking',
'description' => 'Do not enable the private networking add-on.',
'monthly_usd' => 0.00,
'add_on' => null,
'automated' => true,
],
'enabled' => [
'label' => 'Private Networking Enabled',
'description' => 'Purchases the private networking add-on.',
'monthly_usd' => 2.99,
'add_on' => 'privateNetworking',
'automated' => true,
],
],
'storage_types' => [
'included' => [
'label' => 'Included Storage',
'description' => 'Use the plan default storage.',
'monthly_usd' => 0.00,
'add_on' => null,
'automated' => true,
],
'ssd_300' => [
'label' => '300 GB SSD',
'description' => 'Higher SSD storage tier.',
'monthly_usd' => 1.95,
'add_on' => 'extraStorage',
'automated' => false,
],
'nvme_150' => [
'label' => '150 GB NVMe',
'description' => 'Higher NVMe storage tier.',
'monthly_usd' => 2.30,
'add_on' => 'extraStorage',
'automated' => false,
],
],
'object_storage' => [
'none' => [
'label' => 'No Object Storage',
'description' => 'Do not order object storage with this server.',
'monthly_usd' => 0.00,
'automated' => false,
],
'eu_250' => [
'label' => '250 GB Object Storage (EU)',
'description' => 'S3-compatible object storage in the European Union.',
'monthly_usd' => 2.99,
'automated' => false,
],
'eu_500' => [
'label' => '500 GB Object Storage (EU)',
'description' => 'S3-compatible object storage in the European Union.',
'monthly_usd' => 5.98,
'automated' => false,
],
'eu_750' => [
'label' => '750 GB Object Storage (EU)',
'description' => 'S3-compatible object storage in the European Union.',
'monthly_usd' => 8.97,
'automated' => false,
],
'eu_1024' => [
'label' => '1 TB Object Storage (EU)',
'description' => 'S3-compatible object storage in the European Union.',
'monthly_usd' => 11.96,
'automated' => false,
],
],
'linux_default_users' => [
'root' => ['label' => 'root'],
'admin' => ['label' => 'admin'],
],
'windows_default_users' => [
'admin' => ['label' => 'admin'],
'administrator' => ['label' => 'administrator'],
],
],
'server_agent' => [
'release_version' => env('SERVER_AGENT_RELEASE_VERSION', '0.2.0'),
'signed_release_ttl_minutes' => (int) env('SERVER_AGENT_SIGNED_RELEASE_TTL_MINUTES', 10080),
'heartbeat_interval_seconds' => 15,
],
/*
|--------------------------------------------------------------------------
| Shared Hosting Configuration
|--------------------------------------------------------------------------
|
| Settings for the shared hosting nodes.
|
*/
'shared' => [
'default_php_version' => '8.2',
'available_php_versions' => ['8.0', '8.1', '8.2', '8.3'],
'default_document_root' => 'public_html',
'max_upload_size_mb' => 64,
'max_execution_time' => 300,
'memory_limit_mb' => 256,
'phpmyadmin_url' => env('HOSTING_PHPMYADMIN_URL', ''),
'phpmyadmin_sso_secret' => env('HOSTING_PHPMYADMIN_SSO_SECRET', ''),
],
/*
|--------------------------------------------------------------------------
| VPS Configuration
|--------------------------------------------------------------------------
|
| Default settings for VPS instances.
|
*/
'vps' => [
'default_region' => 'EU',
'default_image' => 'afecbb85-e2fc-46f0-9684-b46b1faf00bb', // Ubuntu 22.04
'available_regions' => ['EU', 'US-central', 'US-east', 'US-west', 'SIN', 'UK', 'AUS', 'JPN'],
],
/*
|--------------------------------------------------------------------------
| App Installer Configuration
|--------------------------------------------------------------------------
|
| Settings for the one-click app installer.
|
*/
'apps' => [
'enabled' => ['wordpress', 'joomla', 'drupal', 'opencart'],
'magento_enabled' => false, // Requires higher resource plans
'wordpress' => [
'default_version' => '6.4',
'wp_cli_path' => '/usr/local/bin/wp',
],
],
/*
|--------------------------------------------------------------------------
| Provisioning Settings
|--------------------------------------------------------------------------
|
| General provisioning configuration.
|
*/
'provisioning' => [
'max_retries' => 3,
'retry_delay_minutes' => 5,
'timeout_minutes' => 30,
],
/*
|--------------------------------------------------------------------------
| Legacy ResellerClub Integration
|--------------------------------------------------------------------------
|
| Keep RC integration active for existing customers.
|
*/
'legacy' => [
// Keep RC data/API available for customers with existing ResellerClub services.
'rc_enabled' => (bool) env('LADILL_RC_LEGACY_ENABLED', true),
// New sales and automated fulfillment use Ladill (Dynadot domains, native hosting).
'rc_new_orders_enabled' => (bool) env('LADILL_RC_NEW_ORDERS_ENABLED', false),
// Renew existing ResellerClub services (hosting, domains, VPS, etc.).
'rc_renewals_enabled' => (bool) env('LADILL_RC_RENEWALS_ENABLED', true),
],
];
-123
View File
@@ -1,123 +0,0 @@
<?php
$platformHost = parse_url((string) env('APP_URL', 'https://ladill.com'), PHP_URL_HOST) ?: 'ladill.com';
return [
'account_url' => env(
'LADILL_ACCOUNT_URL',
'https://'.env('ACCOUNT_DOMAIN', 'account.'.$platformHost)
),
'brands' => [
'ladill' => [
'name' => 'Ladill',
'logo' => 'ladill-logo-white.png',
'logo_class' => 'email-logo',
'app_url' => env('APP_URL', 'https://ladill.com'),
'footer_account' => 'an account with Ladill',
'dashboard_path' => '/dashboard',
'support_path' => '/support',
'home_label' => 'ladill.com',
],
'hosting' => [
'name' => 'Ladill Hosting',
'logo' => 'ladillhosting-logo-email.png',
'logo_class' => 'email-logo',
'app_url' => env('LADILL_HOSTING_APP_URL', 'https://hosting.ladill.com'),
'footer_account' => 'a Ladill Hosting account',
'dashboard_path' => '/',
'support_path' => '/support',
'home_label' => 'hosting.ladill.com',
],
'domains' => [
'name' => 'Ladill Domains',
'logo' => 'ladilldomains-logo-email.png',
'logo_class' => 'email-logo',
'app_url' => env('LADILL_DOMAINS_APP_URL', 'https://domains.ladill.com'),
'footer_account' => 'a Ladill Domains account',
'dashboard_path' => '/',
'support_path' => '/support',
'home_label' => 'domains.ladill.com',
],
'bird' => [
'name' => 'Ladill Bird',
'logo' => 'ladillbird-logo-email.png',
'logo_class' => 'email-logo',
'app_url' => env('LADILL_BIRD_APP_URL', 'https://bird.ladill.com'),
'footer_account' => 'a Ladill Bird account',
'dashboard_path' => '/',
'support_path' => '/support',
'home_label' => 'bird.ladill.com',
],
'mail' => [
'name' => 'Ladill Mail',
'logo' => 'ladillmail-logo-email.png',
'logo_class' => 'email-logo',
'app_url' => env('LADILL_WEBMAIL_URL', 'https://mail.ladill.com'),
'footer_account' => 'a Ladill Mail account',
'dashboard_path' => '/',
'support_path' => '/support',
'home_label' => 'mail.ladill.com',
],
'email' => [
'name' => 'Ladill Email',
'logo' => 'ladillemail-logo-email.png',
'logo_class' => 'email-logo',
'app_url' => env('LADILL_EMAIL_APP_URL', 'https://email.ladill.com'),
'footer_account' => 'a Ladill Email account',
'dashboard_path' => '/',
'support_path' => '/support',
'home_label' => 'email.ladill.com',
],
'qrplus' => [
'name' => 'Ladill QR Plus',
'logo' => 'ladillqrplus-logo-email.png',
'logo_class' => 'email-logo',
'app_url' => env('LADILL_QR_APP_URL', 'https://qrplus.ladill.com'),
'footer_account' => 'a Ladill QR Plus account',
'dashboard_path' => '/',
'support_path' => '/support',
'home_label' => 'qrplus.ladill.com',
],
'events' => [
'name' => 'Ladill Events',
'logo' => 'ladillevents-logo-email.png',
'logo_class' => 'email-logo',
'app_url' => env('LADILL_EVENTS_APP_URL', 'https://events.ladill.com'),
'footer_account' => 'a Ladill Events account',
'dashboard_path' => '/',
'support_path' => '/support',
'home_label' => 'events.ladill.com',
],
'transfer' => [
'name' => 'Ladill Transfer',
'logo' => 'ladilltransfer-logo-email.png',
'logo_class' => 'email-logo email-logo-transfer',
'app_url' => env('LADILL_TRANSFER_APP_URL', 'https://transfer.ladill.com'),
'footer_account' => 'a Ladill Transfer account',
'dashboard_path' => '/',
'support_path' => '/support',
'home_label' => 'transfer.ladill.com',
],
'mini' => [
'name' => 'Ladill Mini',
'logo' => 'ladillmini-logo-email.png',
'logo_class' => 'email-logo',
'app_url' => env('LADILL_MINI_APP_URL', 'https://mini.ladill.com'),
'footer_account' => 'a Ladill Mini account',
'dashboard_path' => '/',
'support_path' => '/support',
'home_label' => 'mini.ladill.com',
],
'servers' => [
'name' => 'Ladill Servers',
'logo' => 'ladillservers-logo-email.png',
'logo_class' => 'email-logo',
'app_url' => env('LADILL_SERVERS_APP_URL', 'https://servers.ladill.com'),
'footer_account' => 'a Ladill Servers account',
'dashboard_path' => '/',
'support_path' => '/support',
'home_label' => 'servers.ladill.com',
],
],
];
-9
View File
@@ -1,9 +0,0 @@
<?php
return [
// Consumer config for the platform Mailbox provisioning API (§4). Mail infra
// (Postfix/Dovecot via mail DB + pools) lives on the platform; this app
// provisions through the API. The user is identified by public_id.
'api_url' => env('MAILBOX_API_URL', 'https://ladill.com/api/mailboxes'),
'api_key' => env('MAILBOX_API_KEY_EMAIL'),
];
-17
View File
@@ -1,17 +0,0 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| FCM push for Ladill Mini Android
|--------------------------------------------------------------------------
|
| Sellers receive instant payment alerts when a device token is registered
| and the account was active in the app within this window.
|
*/
'fcm_active_user_within_days' => (int) env('NOTIFICATIONS_FCM_ACTIVE_USER_DAYS', 60),
];
-9
View File
@@ -1,9 +0,0 @@
<?php
return [
'price_per_qr_ghs' => (float) env('QR_PRICE_PER_QR_GHS', 5.0),
'min_topup_ghs' => (float) env('QR_MIN_TOPUP_GHS', 5.0),
'max_pdf_bytes' => (int) env('QR_MAX_PDF_BYTES', 104857600), // 100 MB
'short_code_length' => (int) env('QR_SHORT_CODE_LENGTH', 8),
'scan_unique_window_hours' => (int) env('QR_SCAN_UNIQUE_WINDOW_HOURS', 24),
];