fix: ui + subscription
This commit is contained in:
parent
619d395331
commit
b941f35812
@ -14,6 +14,9 @@ public function __invoke()
|
||||
$settings->update([
|
||||
'is_resale_license_active' => false,
|
||||
]);
|
||||
if (is_dev()) {
|
||||
return;
|
||||
}
|
||||
if (!$settings->resale_license) {
|
||||
return;
|
||||
}
|
||||
|
@ -14,8 +14,8 @@ class Backup extends Component
|
||||
{
|
||||
public InstanceSettings $settings;
|
||||
public $s3s;
|
||||
public StandalonePostgresql|null $database = null;
|
||||
public ScheduledDatabaseBackup|null $backup = null;
|
||||
public StandalonePostgresql|null|array $database = [];
|
||||
public ScheduledDatabaseBackup|null|array $backup = [];
|
||||
public $executions = [];
|
||||
|
||||
protected $rules = [
|
||||
@ -36,8 +36,8 @@ class Backup extends Component
|
||||
|
||||
public function mount()
|
||||
{
|
||||
$this->backup = $this->database->scheduledBackups->first();
|
||||
$this->executions = $this->backup->executions;
|
||||
$this->backup = $this->database?->scheduledBackups->first() ?? [];
|
||||
$this->executions = $this->backup?->executions ?? [];
|
||||
}
|
||||
public function add_coolify_database()
|
||||
{
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
function getSubscriptionLink($id)
|
||||
function getSubscriptionLink($type)
|
||||
{
|
||||
$checkout_id = config("coolify.lemon_squeezy_checkout_id_$id");
|
||||
$checkout_id = config("coolify.lemon_squeezy_checkout_id_$type");
|
||||
if (!$checkout_id) {
|
||||
return null;
|
||||
}
|
||||
|
@ -4,9 +4,8 @@
|
||||
'self_hosted' => env('SELF_HOSTED', true),
|
||||
'license_url' => 'https://license.coolify.io',
|
||||
'lemon_squeezy_webhook_secret' => env('LEMON_SQUEEZY_WEBHOOK_SECRET'),
|
||||
'lemon_squeezy_checkout_id_1' => env('LEMON_SQUEEZY_CHECKOUT_ID_1'),
|
||||
'lemon_squeezy_checkout_id_2' => env('LEMON_SQUEEZY_CHECKOUT_ID_2'),
|
||||
'lemon_squeezy_checkout_id_3' => env('LEMON_SQUEEZY_CHECKOUT_ID_3'),
|
||||
'lemon_squeezy_checkout_id_monthly' => env('LEMON_SQUEEZY_CHECKOUT_ID_MONTHLY'),
|
||||
'lemon_squeezy_checkout_id_yearly' => env('LEMON_SQUEEZY_CHECKOUT_ID_YEARLY'),
|
||||
'mux_enabled' => env('MUX_ENABLED', true),
|
||||
'dev_webhook' => env('SERVEO_URL'),
|
||||
'base_config_path' => env('BASE_CONFIG_PATH', '/_data/coolify'),
|
||||
|
@ -34,9 +34,8 @@ services:
|
||||
- PHP_PM_MAX_SPARE_SERVERS=10
|
||||
- SELF_HOSTED
|
||||
- LEMON_SQUEEZY_WEBHOOK_SECRET
|
||||
- LEMON_SQUEEZY_CHECKOUT_ID_1
|
||||
- LEMON_SQUEEZY_CHECKOUT_ID_2
|
||||
- LEMON_SQUEEZY_CHECKOUT_ID_3
|
||||
- LEMON_SQUEEZY_CHECKOUT_ID_MONTHLY
|
||||
- LEMON_SQUEEZY_CHECKOUT_ID_YEARLY
|
||||
ports:
|
||||
- "${APP_PORT:-8000}:80"
|
||||
expose:
|
||||
|
@ -111,5 +111,8 @@ tr td:first-child {
|
||||
}
|
||||
|
||||
.buyme {
|
||||
@apply block px-3 py-2 mt-10 text-sm font-semibold leading-6 text-center text-white rounded-md shadow-sm bg-coolgray-200 hover:bg-coolgray-300 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-coolgray-200;
|
||||
@apply block px-3 py-2 mt-10 text-sm font-semibold leading-6 text-center text-white rounded-md shadow-sm bg-coolgray-200 hover:bg-coolgray-300 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-coolgray-200 hover:no-underline;
|
||||
}
|
||||
.subtitle {
|
||||
@apply pt-2 pb-10;
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
<x-layout>
|
||||
<h1>Command Center</h1>
|
||||
<div class="pt-2 pb-10">Execute commands on your servers without leaving the browser.</div>
|
||||
<div class="subtitle">Execute commands on your servers without leaving the browser.</div>
|
||||
@if ($servers->count() > 0)
|
||||
<livewire:run-command :servers="$servers" />
|
||||
@else
|
||||
<div>
|
||||
<div>No validated servers found.</div>
|
||||
<x-use-magic-bar />
|
||||
<div>No servers found. Without a server, you won't be able to do much.</div>
|
||||
<x-use-magic-bar link="/server/new" />
|
||||
</div>
|
||||
@endif
|
||||
</x-layout>
|
||||
|
@ -38,9 +38,6 @@ class="{{ request()->is('project/*') || request()->is('projects') ? 'text-warnin
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
@if (auth()->user()->isInstanceAdmin())
|
||||
<li title="Command Center">
|
||||
<a class="hover:bg-transparent" @if (!request()->is('command-center')) href="/command-center" @endif>
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
@ -53,7 +50,10 @@ class="{{ request()->is('command-center') ? 'text-warning icon' : 'icon' }}" vie
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<div class="flex-1"></div>
|
||||
@if (auth()->user()->isInstanceAdmin())
|
||||
<livewire:upgrade />
|
||||
@endif
|
||||
<li title="Profile">
|
||||
<a class="hover:bg-transparent" @if (!request()->is('profile')) href="/profile" @endif>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon" viewBox="0 0 24 24" stroke-width="1.5"
|
||||
@ -79,8 +79,7 @@ class="{{ request()->is('command-center') ? 'text-warning icon' : 'icon' }}" vie
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
<livewire:upgrade />
|
||||
<div class="flex-1"></div>
|
||||
@if (auth()->user()->isInstanceAdmin())
|
||||
<li title="Settings" class="mt-auto">
|
||||
<a class="hover:bg-transparent" @if (!request()->is('settings')) href="/settings" @endif>
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
@ -95,7 +94,6 @@ class="{{ request()->is('settings*') ? 'text-warning icon' : 'icon' }}" viewBox=
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
<li class="pb-6" title="Logout">
|
||||
<form action="/logout" method="POST" class=" hover:bg-transparent">
|
||||
@csrf
|
||||
|
@ -19,8 +19,7 @@ class="sr-only">
|
||||
</fieldset>
|
||||
</div>
|
||||
<div x-show="selected === 'monthly'" class="flex justify-center h-10 mt-3 text-sm leading-6 ">
|
||||
<div>Save <span class="text-2xl font-bold text-warning">20%</span> with the
|
||||
yearly plan
|
||||
<div>Save <span class="font-bold text-warning">10% </span> annually with the yearly plan.
|
||||
</div>
|
||||
</div>
|
||||
<div x-show="selected === 'yearly'" class="flex justify-center h-10 mt-3 text-sm leading-6 ">
|
||||
@ -31,18 +30,20 @@ class="sr-only">
|
||||
<div
|
||||
class="grid max-w-sm grid-cols-1 -mt-16 divide-y divide-coolgray-500 isolate gap-y-16 sm:mx-auto lg:-mx-8 lg:mt-0 lg:max-w-none lg:grid-cols-4 lg:divide-x lg:divide-y-0 xl:-mx-4">
|
||||
<div class="px-8 pt-16 lg:pt-0">
|
||||
<h3 id="tier-basic" class="text-base font-semibold leading-7 text-white">Unlimited Trial</h3>
|
||||
<h3 id="tier-trial" class="text-base font-semibold leading-7 text-white">Unlimited Trial</h3>
|
||||
<p class="flex items-baseline mt-6 gap-x-1">
|
||||
<span x-show="selected === 'monthly'" x-cloak>
|
||||
<span class="text-5xl font-bold tracking-tight text-white">Free</span>
|
||||
<span class="text-4xl font-bold tracking-tight text-white">Free</span>
|
||||
</span>
|
||||
<span x-show="selected === 'yearly'" x-cloak>
|
||||
<span class="text-5xl font-bold tracking-tight text-white">Still Free </span>
|
||||
<span class="text-4xl font-bold tracking-tight text-white">Still Free </span>
|
||||
</span>
|
||||
</p>
|
||||
<a href="https://github.com/coollabsio/coolify" aria-describedby="tier-basic" class="buyme">Get
|
||||
<span x-show="selected === 'yearly'" x-cloak class="text-warning">(save $?)</span>
|
||||
<a href="https://github.com/coollabsio/coolify" aria-describedby="tier-trial" class="buyme">Get
|
||||
Started</a>
|
||||
<p class="pb-6 mt-10 text-sm leading-6 text-white">Start self-hosting without limits with our OSS
|
||||
<p class="mt-10 text-sm leading-6 text-white h-[6.5rem]">Start self-hosting without limits with our
|
||||
OSS
|
||||
version.</p>
|
||||
<ul role="list" class="space-y-3 text-sm leading-6 ">
|
||||
<li class="flex gap-x-3">
|
||||
@ -61,7 +62,7 @@ class="grid max-w-sm grid-cols-1 -mt-16 divide-y divide-coolgray-500 isolate gap
|
||||
d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z"
|
||||
clip-rule="evenodd" />
|
||||
</svg>
|
||||
You need to take care of everything
|
||||
Managed by you
|
||||
</li>
|
||||
<li class="flex gap-x-3">
|
||||
<svg class="flex-none w-5 h-6 text-warning" viewBox="0 0 20 20" fill="currentColor"
|
||||
@ -70,7 +71,7 @@ class="grid max-w-sm grid-cols-1 -mt-16 divide-y divide-coolgray-500 isolate gap
|
||||
d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z"
|
||||
clip-rule="evenodd" />
|
||||
</svg>
|
||||
If you brave enough, you can do it!
|
||||
If you brave enough
|
||||
</li>
|
||||
<li class="flex gap-x-3">
|
||||
<svg class="flex-none w-5 h-6 text-warning" viewBox="0 0 20 20" fill="currentColor"
|
||||
@ -81,22 +82,42 @@ class="grid max-w-sm grid-cols-1 -mt-16 divide-y divide-coolgray-500 isolate gap
|
||||
</svg>
|
||||
Community Support
|
||||
</li>
|
||||
<li class="flex font-bold text-white gap-x-3">
|
||||
<svg width="512" height="512" class="flex-none w-5 h-6 text-green-600"
|
||||
viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
|
||||
stroke-width="2">
|
||||
<path
|
||||
d="M4 13a8 8 0 0 1 7 7a6 6 0 0 0 3-5a9 9 0 0 0 6-8a3 3 0 0 0-3-3a9 9 0 0 0-8 6a6 6 0 0 0-5 3" />
|
||||
<path d="M7 14a6 6 0 0 0-3 6a6 6 0 0 0 6-3m4-8a1 1 0 1 0 2 0a1 1 0 1 0-2 0" />
|
||||
</g>
|
||||
</svg>
|
||||
+ All upcoming features
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="pt-16 lg:px-8 lg:pt-0 xl:px-14">
|
||||
<h3 id="tier-basic" class="text-base font-semibold leading-7 text-white">Basic</h3>
|
||||
<p class="flex items-baseline mt-6 gap-x-1">
|
||||
<span x-show="selected === 'monthly'" x-cloak>
|
||||
<span class="text-5xl font-bold tracking-tight text-white">$15</span>
|
||||
<span class="text-4xl font-bold tracking-tight text-white">$5</span>
|
||||
<span class="text-sm font-semibold leading-6 ">/monthly</span>
|
||||
</span>
|
||||
<span x-show="selected === 'yearly'" x-cloak>
|
||||
<span class="text-5xl font-bold tracking-tight text-white">$144</span>
|
||||
<span class="text-4xl font-bold tracking-tight text-white">$54</span>
|
||||
<span class="text-sm font-semibold leading-6 ">/yearly</span>
|
||||
</span>
|
||||
</p>
|
||||
<a href="{{ getSubscriptionLink(1) }}" aria-describedby="tier-basic" class="buyme">Subscribe</a>
|
||||
<p class="pb-6 mt-10 text-sm leading-6 text-white">Start self-hosting in the cloud with a single
|
||||
<span x-show="selected === 'yearly'" x-cloak class="text-warning">(save $6)</span>
|
||||
|
||||
<a x-show="selected === 'monthly'" x-cloak aria-describedby="tier-basic" class="buyme"
|
||||
href="{{ getSubscriptionLink('monthly') }}">Subscribe</a>
|
||||
<a x-show="selected === 'yearly'" x-cloak aria-describedby="tier-basic" class="buyme"
|
||||
href="{{ getSubscriptionLink('yearly') }}">Subscribe</a>
|
||||
<p class="mt-10 text-sm leading-6 text-white h-[6.5rem]">Start self-hosting in
|
||||
the cloud
|
||||
with a
|
||||
single
|
||||
server.
|
||||
</p>
|
||||
<ul role="list" class="space-y-3 text-sm leading-6 ">
|
||||
@ -125,7 +146,7 @@ class="grid max-w-sm grid-cols-1 -mt-16 divide-y divide-coolgray-500 isolate gap
|
||||
d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z"
|
||||
clip-rule="evenodd" />
|
||||
</svg>
|
||||
30 days of backups
|
||||
Bring your own S3
|
||||
</li>
|
||||
<li class="flex gap-x-3">
|
||||
<svg class="flex-none w-5 h-6 text-warning" viewBox="0 0 20 20" fill="currentColor"
|
||||
@ -136,23 +157,39 @@ class="grid max-w-sm grid-cols-1 -mt-16 divide-y divide-coolgray-500 isolate gap
|
||||
</svg>
|
||||
Basic Support
|
||||
</li>
|
||||
<li class="flex font-bold text-white gap-x-3">
|
||||
<svg width="512" height="512" class="flex-none w-5 h-6 text-green-600"
|
||||
viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="currentColor" stroke-linecap="round"
|
||||
stroke-linejoin="round" stroke-width="2">
|
||||
<path
|
||||
d="M4 13a8 8 0 0 1 7 7a6 6 0 0 0 3-5a9 9 0 0 0 6-8a3 3 0 0 0-3-3a9 9 0 0 0-8 6a6 6 0 0 0-5 3" />
|
||||
<path d="M7 14a6 6 0 0 0-3 6a6 6 0 0 0 6-3m4-8a1 1 0 1 0 2 0a1 1 0 1 0-2 0" />
|
||||
</g>
|
||||
</svg>
|
||||
+ All upcoming features
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="pt-16 lg:px-8 lg:pt-0 xl:px-14">
|
||||
<h3 id="tier-essential" class="text-base font-semibold leading-7 text-white">Essential</h3>
|
||||
<p class="flex items-baseline mt-6 gap-x-1">
|
||||
<span x-show="selected === 'monthly'" x-cloak>
|
||||
<span class="text-5xl font-bold tracking-tight text-white">$30</span>
|
||||
<span class="text-4xl font-bold tracking-tight text-white">$29</span>
|
||||
<span class="text-sm font-semibold leading-6 ">/monthly</span>
|
||||
</span>
|
||||
<span x-show="selected === 'yearly'" x-cloak>
|
||||
<span class="text-5xl font-bold tracking-tight text-white">$288</span>
|
||||
<span class="text-4xl font-bold tracking-tight text-white">$319</span>
|
||||
<span class="text-sm font-semibold leading-6 ">/yearly</span>
|
||||
</span>
|
||||
</p>
|
||||
<a href="{{ getSubscriptionLink(2) }}" aria-describedby="tier-essential"
|
||||
class="buyme">Subscribe</a>
|
||||
<p class="mt-10 text-sm leading-6 text-white">Scale your business or self-hosting environment.</p>
|
||||
<span x-show="selected === 'yearly'" x-cloak class="text-warning">(save $29)</span>
|
||||
<a x-show="selected === 'monthly'" x-cloak aria-describedby="tier-essential" class="buyme"
|
||||
href="{{ getSubscriptionLink('monthly') }}">Subscribe</a>
|
||||
<a x-show="selected === 'yearly'" x-cloak aria-describedby="tier-essential" class="buyme"
|
||||
href="{{ getSubscriptionLink('yearly') }}">Subscribe</a>
|
||||
<p class="h-20 mt-10 text-sm leading-6 text-white">Scale your business or self-hosting environment.
|
||||
</p>
|
||||
<ul role="list" class="mt-6 space-y-3 text-sm leading-6 ">
|
||||
<li class="flex gap-x-3">
|
||||
<svg class="flex-none w-5 h-6 text-warning" viewBox="0 0 20 20" fill="currentColor"
|
||||
@ -179,7 +216,7 @@ class="buyme">Subscribe</a>
|
||||
d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z"
|
||||
clip-rule="evenodd" />
|
||||
</svg>
|
||||
30 days of backups
|
||||
Provided (optional) S3
|
||||
</li>
|
||||
<li class="flex gap-x-3">
|
||||
<svg class="flex-none w-5 h-6 text-warning" viewBox="0 0 20 20" fill="currentColor"
|
||||
@ -190,24 +227,38 @@ class="buyme">Subscribe</a>
|
||||
</svg>
|
||||
Basic Support
|
||||
</li>
|
||||
<li class="flex font-bold text-white gap-x-3">
|
||||
<svg width="512" height="512" class="flex-none w-5 h-6 text-green-600"
|
||||
viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="currentColor" stroke-linecap="round"
|
||||
stroke-linejoin="round" stroke-width="2">
|
||||
<path
|
||||
d="M4 13a8 8 0 0 1 7 7a6 6 0 0 0 3-5a9 9 0 0 0 6-8a3 3 0 0 0-3-3a9 9 0 0 0-8 6a6 6 0 0 0-5 3" />
|
||||
<path d="M7 14a6 6 0 0 0-3 6a6 6 0 0 0 6-3m4-8a1 1 0 1 0 2 0a1 1 0 1 0-2 0" />
|
||||
</g>
|
||||
</svg>
|
||||
+ All upcoming features
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="pt-16 lg:px-8 lg:pt-0 xl:px-14">
|
||||
<h3 id="tier-growth" class="text-base font-semibold leading-7 text-white">Growth</h3>
|
||||
<p class="flex items-baseline mt-6 gap-x-1">
|
||||
<span x-show="selected === 'monthly'" x-cloak>
|
||||
<span class="text-5xl font-bold tracking-tight text-white">$60</span>
|
||||
<span class="text-4xl font-bold tracking-tight text-white">$49</span>
|
||||
<span class="text-sm font-semibold leading-6 ">/monthly</span>
|
||||
</span>
|
||||
<span x-show="selected === 'yearly'" x-cloak>
|
||||
<span class="text-5xl font-bold tracking-tight text-white">$576</span>
|
||||
<span class="text-4xl font-bold tracking-tight text-white">$539</span>
|
||||
<span class="text-sm font-semibold leading-6 ">/yearly</span>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<a href="{{ getSubscriptionLink(3) }}" aria-describedby="tier-growth"
|
||||
class="buyme">Subscribe</a>
|
||||
<p class="mt-10 text-sm leading-6 text-white">Deploy complex infrastuctures and
|
||||
<span x-show="selected === 'yearly'" x-cloak class="text-warning">(save $69)</span>
|
||||
<a x-show="selected === 'monthly'" x-cloak aria-describedby="tier-growth" class="buyme"
|
||||
href="{{ getSubscriptionLink('monthly') }}">Subscribe</a>
|
||||
<a x-show="selected === 'yearly'" x-cloak aria-describedby="tier-growth" class="buyme"
|
||||
href="{{ getSubscriptionLink('yearly') }}">Subscribe</a>
|
||||
<p class="h-20 mt-10 text-sm leading-6 text-white">Deploy complex infrastuctures and
|
||||
manage them easily in one place.</p>
|
||||
<ul role="list" class="mt-6 space-y-3 text-sm leading-6 ">
|
||||
<li class="flex gap-x-3">
|
||||
@ -235,7 +286,7 @@ class="buyme">Subscribe</a>
|
||||
d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z"
|
||||
clip-rule="evenodd" />
|
||||
</svg>
|
||||
30 days of backups
|
||||
Provided (optional) S3
|
||||
</li>
|
||||
<li class="flex font-bold text-white gap-x-3">
|
||||
<svg class="flex-none w-5 h-6 text-warning" viewBox="0 0 20 20" fill="currentColor"
|
||||
@ -246,6 +297,18 @@ class="buyme">Subscribe</a>
|
||||
</svg>
|
||||
Priority Support
|
||||
</li>
|
||||
<li class="flex font-bold text-white gap-x-3">
|
||||
<svg width="512" height="512" class="flex-none w-5 h-6 text-green-600"
|
||||
viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="currentColor" stroke-linecap="round"
|
||||
stroke-linejoin="round" stroke-width="2">
|
||||
<path
|
||||
d="M4 13a8 8 0 0 1 7 7a6 6 0 0 0 3-5a9 9 0 0 0 6-8a3 3 0 0 0-3-3a9 9 0 0 0-8 6a6 6 0 0 0-5 3" />
|
||||
<path d="M7 14a6 6 0 0 0-3 6a6 6 0 0 0 6-3m4-8a1 1 0 1 0 2 0a1 1 0 1 0-2 0" />
|
||||
</g>
|
||||
</svg>
|
||||
+ All upcoming features
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<h1>Server</h1>
|
||||
<livewire:server.proxy.status :server="$server" />
|
||||
</div>
|
||||
<div class="pt-2 pb-10 ">{{ data_get($server, 'name') }}</div>
|
||||
<div class="subtitle ">{{ data_get($server, 'name') }}</div>
|
||||
<nav class="navbar-main">
|
||||
<a class="{{ request()->routeIs('server.show') ? 'text-white' : '' }}"
|
||||
href="{{ route('server.show', [
|
||||
|
@ -1,6 +1,6 @@
|
||||
<div class="pb-5">
|
||||
<h1>Settings</h1>
|
||||
<div class="pt-2 pb-10">Instance wide settings for Coolify.</div>
|
||||
<div class="subtitle">Instance wide settings for Coolify.</div>
|
||||
<nav class="navbar-main">
|
||||
<a class="{{ request()->routeIs('settings.configuration') ? 'text-white' : '' }}"
|
||||
href="{{ route('settings.configuration') }}">
|
||||
|
@ -3,8 +3,8 @@
|
||||
Use the magic
|
||||
bar (press <span class="kbd-custom">/</span>) to create a new one or
|
||||
<a href="{{ $link }}" class="underline text-warning">
|
||||
click here
|
||||
</a>.
|
||||
click here.
|
||||
</a>
|
||||
@else
|
||||
Use the magic
|
||||
bar (press <span class="kbd-custom">/</span>) to create a new one.
|
||||
|
@ -1,6 +1,6 @@
|
||||
<x-layout>
|
||||
<h1>Dashboard</h1>
|
||||
<div class="pt-2 pb-10">Something <span class="text-warning">(more)</span> useful will be here.</div>
|
||||
<div class="subtitle">Something <span class="text-warning">(more)</span> useful will be here.</div>
|
||||
<div class="w-full rounded stats stats-vertical lg:stats-horizontal">
|
||||
<div class="stat">
|
||||
<div class="stat-title">Servers</div>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<x-layout>
|
||||
<h1>Destinations</h1>
|
||||
<div class="pt-2 pb-10 ">All Destinations</div>
|
||||
<div class="subtitle ">All Destinations</div>
|
||||
<div class="grid gap-2 lg:grid-cols-2">
|
||||
@forelse ($destinations as $destination)
|
||||
@if ($destination->getMorphClass() === 'App\Models\StandaloneDocker')
|
||||
|
@ -18,9 +18,9 @@
|
||||
</div>
|
||||
|
||||
@if ($destination->getMorphClass() === 'App\Models\StandaloneDocker')
|
||||
<div class="pt-2 pb-10 ">A Docker network in a non-swarm environment</div>
|
||||
<div class="subtitle ">A Docker network in a non-swarm environment</div>
|
||||
@else
|
||||
<div class="pt-2 pb-10 ">Your swarm docker network. WIP</div>
|
||||
<div class="subtitle ">Your swarm docker network. WIP</div>
|
||||
@endif
|
||||
<div class="flex gap-2">
|
||||
<x-forms.input id="destination.name" label="Name" />
|
||||
|
@ -1,6 +1,6 @@
|
||||
<div>
|
||||
<h1>Create a new Destination</h1>
|
||||
<div class="pt-2 pb-10 ">Destinations are used to segregate resources by network.</div>
|
||||
<div class="subtitle ">Destinations are used to segregate resources by network.</div>
|
||||
<form class="flex flex-col gap-4" wire:submit.prevent='submit'>
|
||||
<div class="flex gap-2">
|
||||
<x-forms.input id="name" label="Name" required />
|
||||
|
@ -1,6 +1,6 @@
|
||||
<div>
|
||||
<h1>Create a new Server</h1>
|
||||
<div class="pt-2 pb-10 ">Servers are the main blocks of your infrastructure.</div>
|
||||
<div class="subtitle ">Servers are the main blocks of your infrastructure.</div>
|
||||
<form class="flex flex-col gap-2" wire:submit.prevent='submit'>
|
||||
<div class="flex gap-2">
|
||||
<x-forms.input id="name" label="Name" required />
|
||||
|
@ -44,7 +44,7 @@
|
||||
@else
|
||||
<div>
|
||||
<h2>Proxy</h2>
|
||||
<div class="pt-2 pb-10 ">Select a proxy you would like to use on this server.</div>
|
||||
<div class="subtitle ">Select a proxy you would like to use on this server.</div>
|
||||
<div class="flex gap-2">
|
||||
<x-forms.button class="w-32 box" wire:click="select_proxy('{{ ProxyTypes::TRAEFIK_V2 }}')">
|
||||
Traefik
|
||||
|
@ -30,7 +30,7 @@
|
||||
</x-forms.button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pt-2 pb-10 ">Your Private GitHub App for private repositories.</div>
|
||||
<div class="subtitle ">Your Private GitHub App for private repositories.</div>
|
||||
@if ($github_app->app_id)
|
||||
<div class="w-48">
|
||||
<x-forms.checkbox label="System Wide?"
|
||||
|
@ -1,6 +1,6 @@
|
||||
<div>
|
||||
<h1>Create a new S3 Storage</h1>
|
||||
<div class="pt-2 pb-10 ">S3 Storage used to save backups / files</div>
|
||||
<div class="subtitle ">S3 Storage used to save backups / files</div>
|
||||
<form class="flex flex-col gap-2" wire:submit.prevent='submit'>
|
||||
<div class="flex gap-2">
|
||||
<x-forms.input label="Name" id="name" />
|
||||
|
@ -1,6 +1,6 @@
|
||||
<x-layout>
|
||||
<h1>Private Keys</h1>
|
||||
<div class="pt-2 pb-10 ">All Private Keys</div>
|
||||
<div class="subtitle ">All Private Keys</div>
|
||||
<div class="grid gap-2 lg:grid-cols-2">
|
||||
@forelse ($privateKeys as $key)
|
||||
<a class="text-center hover:no-underline box group"
|
||||
|
@ -1,5 +1,5 @@
|
||||
<x-layout>
|
||||
<h1>Create a new Private Key</h1>
|
||||
<div class="pt-2 pb-10 ">Private Keys are used for connection to servers.</div>
|
||||
<div class="subtitle ">Private Keys are used for connection to servers.</div>
|
||||
<livewire:private-key.create />
|
||||
</x-layout>
|
||||
|
@ -1,8 +1,10 @@
|
||||
<x-layout>
|
||||
<h1>Profile</h1>
|
||||
<div class="pt-2 pb-10 ">Your user profile settings.</div>
|
||||
<div class="subtitle ">Your user profile settings.</div>
|
||||
<livewire:profile.form :request="$request" />
|
||||
<h3 class="py-4">Two-factor Authentication</h3>
|
||||
<h2 class="py-4">Subscription</h2>
|
||||
<a href="{{ route('team.show') }}">Check in Team Settings</a>
|
||||
<h2 class="py-4">Two-factor Authentication</h2>
|
||||
@if (session('status') == 'two-factor-authentication-enabled')
|
||||
<div class="mb-4 font-medium">
|
||||
Please finish configuring two factor authentication below. Read the QR code or enter the secret key
|
||||
@ -17,7 +19,8 @@
|
||||
<div>
|
||||
<div>{!! $request->user()->twoFactorQrCodeSvg() !!}</div>
|
||||
<div x-data="{ showCode: false }" class="py-2">
|
||||
<x-forms.button x-on:click="showCode = !showCode">Show secret key to manually enter</x-forms.button>
|
||||
<x-forms.button x-on:click="showCode = !showCode">Show secret key to manually
|
||||
enter</x-forms.button>
|
||||
<template x-if="showCode">
|
||||
<div class="py-2 ">{!! decrypt($request->user()->two_factor_secret) !!}</div>
|
||||
</template>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<x-forms.button class="btn" onclick="newEnvironment.showModal()">+ Add</x-forms.button>
|
||||
<livewire:project.add-environment :project="$project" />
|
||||
</div>
|
||||
<div class="pt-2 pb-10 text-xs truncate lg:text-sm">{{ $project->name }}</div>
|
||||
<div class="subtitle text-xs truncate lg:text-sm">{{ $project->name }}</div>
|
||||
<div class="grid gap-2 lg:grid-cols-2">
|
||||
@forelse ($project->environments as $environment)
|
||||
<a class="box" href="{{ route('project.resources', [$project->uuid, $environment->name]) }}">
|
||||
|
@ -6,7 +6,7 @@
|
||||
<livewire:project.add-empty />
|
||||
@endif
|
||||
</div>
|
||||
<div class="pt-2 pb-10 ">All Projects</div>
|
||||
<div class="subtitle ">All Projects</div>
|
||||
<div class="grid gap-2 lg:grid-cols-2">
|
||||
@if ($servers === 0)
|
||||
<div>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<x-layout>
|
||||
<h1>Servers</span></h1>
|
||||
<div class="pt-2 pb-10 ">All Servers</div>
|
||||
<div class="subtitle ">All Servers</div>
|
||||
<div class="grid gap-2 lg:grid-cols-2">
|
||||
@forelse ($servers as $server)
|
||||
<div x-data x-on:click="goto('{{ $server->uuid }}')" @class([
|
||||
|
@ -1,7 +1,7 @@
|
||||
<x-layout>
|
||||
@if ($private_keys->count() === 0)
|
||||
<h1>Create Private Key</h1>
|
||||
<div class="pb-10">You need to create a private key before you can create a server.</div>
|
||||
<div class="subtitle">You need to create a private key before you can create a server.</div>
|
||||
<livewire:private-key.create from="server" />
|
||||
@else
|
||||
<livewire:server.new.by-ip :private_keys="$private_keys" />
|
||||
|
@ -1,6 +1,6 @@
|
||||
<x-layout>
|
||||
<h1>Sources</h1>
|
||||
<div class="pt-2 pb-10 ">All Sources</div>
|
||||
<div class="subtitle ">All Sources</div>
|
||||
<div class="grid gap-2 lg:grid-cols-2">
|
||||
@forelse ($sources as $source)
|
||||
@if ($source->getMorphClass() === 'App\Models\GithubApp')
|
||||
|
@ -1,6 +1,6 @@
|
||||
<x-layout>
|
||||
<h1>New Source</h1>
|
||||
<div class="pt-2 pb-10 ">Add source providers for your applications.</div>
|
||||
<div class="subtitle ">Add source providers for your applications.</div>
|
||||
<div x-data="{ activeTab: window.location.hash ? window.location.hash.substring(1) : '' }">
|
||||
<div class="flex justify-center h-full gap-2 pb-6">
|
||||
<a class="flex items-center justify-center w-1/2 p-2 transition-colors rounded-none min-h-12 bg-coolgray-200 hover:bg-coollabs-100 hover:text-white hover:no-underline"
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div class="flex justify-center mx-10">
|
||||
<div>
|
||||
<div class="flex gap-2">
|
||||
<h3>Subscription</h3>
|
||||
<h2>Subscription</h2>
|
||||
<livewire:switch-team />
|
||||
</div>
|
||||
<div class="flex items-center pb-8">
|
||||
|
@ -1,5 +1,5 @@
|
||||
<x-layout>
|
||||
<h1>New Team</h1>
|
||||
<div class="pt-2 pb-10">Add a new team</div>
|
||||
<div class="subtitle">Add a new team</div>
|
||||
<livewire:team.create />
|
||||
</x-layout>
|
||||
|
@ -18,13 +18,16 @@
|
||||
@else
|
||||
<div class="pb-4">Renews at: {{ getRenewDate() }}</div>
|
||||
@endif
|
||||
<x-forms.button><a class="text-white" href="{{ getPaymentLink() }}">Update Payment Details</a>
|
||||
<x-forms.button><a class="text-white hover:no-underline" href="{{ getPaymentLink() }}">Update Payment
|
||||
Details</a>
|
||||
</x-forms.button>
|
||||
@else
|
||||
<x-forms.button class="mt-4"><a class="text-white" href="{{ route('subscription') }}">Subscribe Now</a>
|
||||
<x-forms.button class="mt-4"><a class="text-white hover:no-underline"
|
||||
href="{{ route('subscription') }}">Subscribe Now</a>
|
||||
</x-forms.button>
|
||||
@endif
|
||||
<x-forms.button><a class="text-white" href="https://app.lemonsqueezy.com/my-orders">Manage My
|
||||
<x-forms.button><a class="text-white hover:no-underline"
|
||||
href="https://app.lemonsqueezy.com/my-orders">Manage My
|
||||
Subscription</a>
|
||||
</x-forms.button>
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user