@php $input = 'w-full rounded-xl border border-edge bg-ink px-3.5 py-2.5 text-sm text-slate-100 placeholder:text-slate-500 focus:border-brand focus:ring-2 focus:ring-brand/30'; $lbl = 'mb-1.5 block text-sm font-medium text-slate-300'; $fld = function ($label, $model, $ph = '', $type = 'text') use ($input, $lbl) { return '
'; }; $save = fn ($method) => ''; $tabs = [ 'general' => ['General', 'settings'], 'company' => ['Company', 'building-2'], 'email' => ['Email', 'mail'], 'sms' => ['SMS', 'message-square'], 'storage' => ['Storage', 'database'], 'social' => ['Social & OAuth', 'share-2'], 'payment' => ['Payment Gateways', 'credit-card'], 'automation' => ['Automation', 'workflow'], 'security' => ['Security', 'shield'], 'system' => ['System', 'server'], 'desktop' => ['Desktop Updates', 'monitor'], ]; @endphp
{{-- Tab bar --}}
@foreach ($tabs as $key => [$label, $icon]) @endforeach
{{-- ============ Left: tab content ============ --}}
{{-- GENERAL --}} @if ($tab === 'general')

General Settings

Configure general application settings.

@error('general.site_name')

{{ $message }}

@enderror
{!! $fld('Application URL', 'general.app_url', 'https://ccpublisher.com') !!} {!! $fld('Admin Email', 'general.admin_email', 'admin@ccpublisher.com', 'email') !!}
{!! $fld('Items Per Page', 'general.items_per_page', '25', 'number') !!}
{!! $save('saveGeneral') !!}
@endif {{-- COMPANY --}} @if ($tab === 'company')
{!! $fld('Company Name', 'company.name') !!} {!! $fld('Phone Number', 'company.phone') !!}
{!! $fld('Company Address', 'company.address') !!}
{!! $fld('Country', 'company.country') !!} {!! $fld('State', 'company.state') !!} {!! $fld('City', 'company.city') !!} {!! $fld('Postal Code', 'company.postal') !!} {!! $fld('Support Email', 'company.support_email', '', 'email') !!} {!! $fld('Support Website', 'company.support_website') !!} {!! $fld('Business Registration No.', 'company.reg_number') !!} {!! $fld('Tax Number', 'company.tax_number') !!}
{!! $fld('Currency Symbol', 'company.currency_symbol') !!}
{!! $save('saveCompany') !!}
@endif {{-- EMAIL --}} @if ($tab === 'email')
@error('mail_host')

{{ $message }}

@enderror
{!! $fld('SMTP Username', 'mail_username') !!}
{!! $fld('Sender Name', 'mail_from_name') !!} {!! $fld('Sender Email', 'mail_from_address', '', 'email') !!} {!! $fld('Reply-To Email', 'mail_reply_to', '', 'email') !!}
{!! $save('saveMail') !!}
@foreach ($templates as $t) @endforeach
@if ($editingTemplateId)
@error('tpl_subject')

{{ $message }}

@enderror
@error('tpl_body')

{{ $message }}

@enderror
@endif
@endif {{-- STORAGE --}} @if ($tab === 'storage')
{!! $fld('Storage Limit (GB)', 'storage.limit_gb', '10', 'number') !!} {!! $fld('Video Upload Limit (MB)', 'storage.video_mb', '1024', 'number') !!} {!! $fld('Image Upload Limit (MB)', 'storage.image_mb', '25', 'number') !!} {!! $fld('Document Upload Limit (MB)', 'storage.doc_mb', '50', 'number') !!} {!! $fld('Temporary File Lifetime (hours)', 'storage.temp_lifetime_h', '24', 'number') !!}
{!! $save('saveStorage') !!}
@endif {{-- SOCIAL & OAUTH --}} @if ($tab === 'social')

Operator-level app credentials. Secrets are encrypted and never exposed to customers.

FB Meta (Facebook / Instagram) @if($meta_secret_set)Configured@endif
YT Google (YouTube) @if($google_secret_set)Configured@endif

TikTok, LinkedIn & Pinterest OAuth are not yet wired — coming in a future release.

{!! $save('saveOauth') !!}
@endif {{-- PAYMENT --}} @if ($tab === 'payment')
{!! $fld('Publishable Key', 'payment.stripe_key', 'pk_live_…') !!}
{!! $fld('Webhook URL', 'payment.stripe_webhook') !!}
{!! $fld('Client ID', 'payment.paypal_client_id') !!}
{!! $fld('Webhook URL', 'payment.paypal_webhook') !!}

Paddle, LemonSqueezy & Authorize.net can be added on request. Payment processing is not yet wired — these credentials are stored securely for when it is.

{!! $save('savePayment') !!}
@endif {{-- SMS --}} @if ($tab === 'sms')

Stored encrypted. Leave blank to keep the current key.

68SMS sends to the US, UK and Canada only.

{!! $fld('Sending Number (optional)', 'sms_from', 'Leave blank to let the provider choose') !!}
@if ($sms_balance !== null) Balance: {{ $sms_balance }} @endif
{!! $fld('Test Recipient', 'sms_test_recipient', '15856931105') !!}

A test message costs one send against your 68SMS balance.

Customers receive texts only after verifying their number and opting in to SMS notifications.

{!! $save('saveSms') !!}
@endif {{-- AUTOMATION --}} @if ($tab === 'automation')
{!! $fld('Maximum Queue Workers', 'automation.max_workers', '3', 'number') !!} {!! $fld('Maximum Concurrent Jobs', 'automation.max_concurrent', '5', 'number') !!} {!! $fld('Queue Retry Attempts', 'automation.retry_attempts', '3', 'number') !!} {!! $fld('Queue Timeout (seconds)', 'automation.timeout_s', '900', 'number') !!} {!! $fld('Scheduler Interval (seconds)', 'automation.scheduler_interval_s', '60', 'number') !!} {!! $fld('Automation Delay (seconds)', 'automation.automation_delay_s', '120', 'number') !!} {!! $fld('Retry Delay (minutes)', 'automation.retry_delay_m', '15', 'number') !!} {!! $fld('Maximum Retry Count', 'automation.max_retry', '5', 'number') !!}

These are operator defaults; the desktop app enforces its own per-user queue governor.

{!! $save('saveAutomation') !!}
@endif {{-- SECURITY --}} @if ($tab === 'security')
{!! $fld('Password Minimum Length', 'security.password_min', '8', 'number') !!} {!! $fld('Session Timeout (minutes)', 'security.session_timeout_m', '120', 'number') !!} {!! $fld('Login Attempt Limit', 'security.login_limit', '5', 'number') !!} {!! $fld('API Token Expiry (days)', 'security.api_token_expiry_d', '90', 'number') !!}
{!! $save('saveSecurity') !!}
@endif {{-- SYSTEM --}} @if ($tab === 'system')
Environment
{{ $system['env'] }}
Debug Mode
{{ $system['debug'] ? 'Enabled' : 'Disabled' }}
Database
{{ $system['db'] ? 'Connected' : 'Down' }}
Queue Driver
{{ $system['queue'] }}
Cache Driver
{{ $system['cache'] }}
Pending Jobs
{{ $system['jobs'] }}
PHP Version
{{ $system['php'] }}
Laravel Version
{{ $system['laravel'] }}
Server Time
{{ $system['server_time']->format('M j, Y H:i') }}
@endif {{-- DESKTOP UPDATES --}} @if ($tab === 'desktop')
Latest Desktop Version
{{ $desktop['latest']?->version ?? '—' }}
Manage Releases

Version History

@forelse ($desktop['history'] as $v) @empty @endforelse
VersionTypeStatusDownloadsReleased
{{ $v->version }}{{ ucfirst($v->release_type) }}{{ $v->status }}{{ number_format($v->download_count) }}{{ $v->published_at?->format('M j, Y') ?? '—' }}
No releases yet.

Upload installers, set mandatory updates and grace periods in the Software Updates module.

@endif
{{-- ============ Right rail ============ --}}

Application Information

Versionv{{ $appInfo['version'] }}
Environment{{ $system['env'] }}
Debug Mode{{ $system['debug'] ? 'Enabled' : 'Disabled' }}
PHP Version{{ $system['php'] }}
Laravel Version{{ $system['laravel'] }}
Installation Date{{ $appInfo['installed']?->format('M j, Y') ?? '—' }}

System Time

{{ $system['server_time']->format('h:i:s A') }}
{{ $system['server_time']->format('l, M j, Y') }}
Timezone{{ config('app.timezone') }}

Configuration Cache

Clear cached configuration to apply changes across the application.

Last Cleared{{ $appInfo['cache_cleared'] ? \Carbon\Carbon::parse($appInfo['cache_cleared'])->format('M j, H:i') : 'Never' }}
{{-- ============ About ============ --}}
CC
CC Publisherv{{ $appInfo['version'] }}

The all-in-one social media auto publishing and automation platform.

{{ number_format($stats['users']) }}
Total Users
{{ number_format($stats['accounts']) }}
Accounts
{{ number_format($stats['posts']) }}
Posts Today
{{ $stats['uptime'] }}%
Uptime