main: initial app rewrite

This commit is contained in:
Gary 2024-07-25 13:04:05 -07:00
parent f76d45b826
commit 1b076cfffc
23 changed files with 145 additions and 116 deletions

View File

@ -1,8 +1,6 @@
_____ _ _ __
/ ____| | (_)/ _|
| | ___ ___ | |_| |_ _ _
| | / _ \ / _ \| | | _| | | |
| |___| (_) | (_) | | | | | |_| |
\_____\___/ \___/|_|_|_| \__, |
__/ |
|___/
__ _ __ __ _
/ /__ _______ _______ (_)____ / //_/(_)___ ____ _
__ / / _ \/ ___/ / / / ___/ / / ___/ / ,< / / __ \/ __ `/
/ /_/ / __(__ ) /_/ (__ ) / (__ ) / /| |/ / / / / /_/ /
\____/\___/____/\__,_/____/ /_/____/ /_/ |_/_/_/ /_/\__, /
/____/

View File

@ -58,9 +58,9 @@ public function submit()
'content' => 'User: `' . auth()->user()?->email . '` with subject: `' . $this->subject . '` has the following problem: `' . $this->description . '`',
]);
} else {
send_user_an_email($mail, auth()->user()?->email, 'hi@coollabs.io');
send_user_an_email($mail, auth()->user()?->email, 'support@lasthourhosting.org');
}
$this->dispatch('success', 'Feedback sent.', 'We will get in touch with you as soon as possible.');
$this->dispatch('success', 'Feedback sent.', 'Thank you! We will get in touch with you as soon as possible.');
} catch (\Throwable $e) {
return handleError($e, $this);
}

View File

@ -50,9 +50,9 @@ public function testConnection(bool $shouldSave = false)
} catch (\Throwable $e) {
$this->is_usable = false;
if ($this->unusable_email_sent === false && is_transactional_emails_active()) {
$mail = new MailMessage;
$mail->subject('Coolify: S3 Storage Connection Error');
$mail->view('emails.s3-connection-error', ['name' => $this->name, 'reason' => $e->getMessage(), 'url' => route('storage.show', ['storage_uuid' => $this->uuid])]);
$mail = new MailMessage();
$mail->subject('Last Hour: S3 Storage Connection Error');
$mail->view('emails.s3-connection-error', ['name' => $this->name, 'reason' => $e->getMessage(), 'url' => route('team.storage.show', ['storage_uuid' => $this->uuid])]);
$users = collect([]);
$members = $this->team->members()->get();
foreach ($members as $user) {

View File

@ -132,7 +132,7 @@ public function sendVerificationEmail()
$mail->view('emails.email-verification', [
'url' => $url,
]);
$mail->subject('Coolify: Verify your email.');
$mail->subject('Last Hour: Verify your email.');
send_user_an_email($mail, $this->email);
}

View File

@ -57,10 +57,10 @@ public function toMail(): MailMessage
$pull_request_id = data_get($this->preview, 'pull_request_id', 0);
$fqdn = $this->fqdn;
if ($pull_request_id === 0) {
$mail->subject('Coolify: Deployment failed of '.$this->application_name.'.');
$mail->subject('Last Hour: Deployment failed of ' . $this->application_name . '.');
} else {
$fqdn = $this->preview->fqdn;
$mail->subject('Coolify: Deployment failed of pull request #'.$this->preview->pull_request_id.' of '.$this->application_name.'.');
$mail->subject('Last Hour: Deployment failed of pull request #' . $this->preview->pull_request_id . ' of ' . $this->application_name . '.');
}
$mail->view('emails.application-deployment-failed', [
'name' => $this->application_name,
@ -75,10 +75,10 @@ public function toMail(): MailMessage
public function toDiscord(): string
{
if ($this->preview) {
$message = 'Coolify: Pull request #'.$this->preview->pull_request_id.' of '.$this->application_name.' ('.$this->preview->fqdn.') deployment failed: ';
$message = 'Last Hour: Pull request #' . $this->preview->pull_request_id . ' of **' . $this->application_name . '** (' . $this->preview->fqdn . ') deployment failed: ';
$message .= '[View Deployment Logs](' . $this->deployment_url . ')';
} else {
$message = 'Coolify: Deployment failed of '.$this->application_name.' ('.$this->fqdn.'): ';
$message = 'Last Hour: Deployment failed of **' . $this->application_name . '** (' . $this->fqdn . '): ';
$message .= '[View Deployment Logs](' . $this->deployment_url . ')';
}
@ -88,9 +88,9 @@ public function toDiscord(): string
public function toTelegram(): array
{
if ($this->preview) {
$message = 'Coolify: Pull request #'.$this->preview->pull_request_id.' of '.$this->application_name.' ('.$this->preview->fqdn.') deployment failed: ';
$message = 'Last Hour: Pull request #' . $this->preview->pull_request_id . ' of **' . $this->application_name . '** (' . $this->preview->fqdn . ') deployment failed: ';
} else {
$message = 'Coolify: Deployment failed of '.$this->application_name.' ('.$this->fqdn.'): ';
$message = 'Last Hour: Deployment failed of **' . $this->application_name . '** (' . $this->fqdn . '): ';
}
$buttons[] = [
'text' => 'Deployment logs',

View File

@ -63,10 +63,10 @@ public function toMail(): MailMessage
$pull_request_id = data_get($this->preview, 'pull_request_id', 0);
$fqdn = $this->fqdn;
if ($pull_request_id === 0) {
$mail->subject("Coolify: New version is deployed of {$this->application_name}");
$mail->subject("Last Hour: New version is deployed of {$this->application_name}");
} else {
$fqdn = $this->preview->fqdn;
$mail->subject("Coolify: Pull request #{$pull_request_id} of {$this->application_name} deployed successfully");
$mail->subject("Last Hour: Pull request #{$pull_request_id} of {$this->application_name} deployed successfully");
}
$mail->view('emails.application-deployment-success', [
'name' => $this->application_name,
@ -81,7 +81,7 @@ public function toMail(): MailMessage
public function toDiscord(): string
{
if ($this->preview) {
$message = 'Coolify: New PR'.$this->preview->pull_request_id.' version successfully deployed of '.$this->application_name.'
$message = 'Last Hour: New PR' . $this->preview->pull_request_id . ' version successfully deployed of ' . $this->application_name . '
';
if ($this->preview->fqdn) {
@ -89,7 +89,7 @@ public function toDiscord(): string
}
$message .= '[Deployment logs](' . $this->deployment_url . ')';
} else {
$message = 'Coolify: New version successfully deployed of '.$this->application_name.'
$message = 'Last Hour: New version successfully deployed of ' . $this->application_name . '
';
if ($this->fqdn) {
@ -104,7 +104,7 @@ public function toDiscord(): string
public function toTelegram(): array
{
if ($this->preview) {
$message = 'Coolify: New PR'.$this->preview->pull_request_id.' version successfully deployed of '.$this->application_name.'';
$message = 'Last Hour: New PR' . $this->preview->pull_request_id . ' version successfully deployed of ' . $this->application_name . '';
if ($this->preview->fqdn) {
$buttons[] = [
'text' => 'Open Application',

View File

@ -45,7 +45,7 @@ public function toMail(): MailMessage
{
$mail = new MailMessage;
$fqdn = $this->fqdn;
$mail->subject("Coolify: {$this->resource_name} has been stopped");
$mail->subject("Last Hour: {$this->resource_name} has been stopped");
$mail->view('emails.application-status-changes', [
'name' => $this->resource_name,
'fqdn' => $fqdn,
@ -57,25 +57,23 @@ public function toMail(): MailMessage
public function toDiscord(): string
{
$message = 'Coolify: '.$this->resource_name.' has been stopped.
$message = 'Last Hour: ' . $this->resource_name . ' has been stopped.
';
$message .= '[Open Application in Coolify]('.$this->resource_url.')';
$message .= '[Open Application in Last Hour](' . $this->resource_url . ')';
return $message;
}
public function toTelegram(): array
{
$message = 'Coolify: '.$this->resource_name.' has been stopped.';
$message = 'Last Hour: ' . $this->resource_name . ' has been stopped.';
return [
'message' => $message,
'buttons' => [
[
'text' => 'Open Application in Coolify',
'url' => $this->resource_url,
],
"text" => "Open Application in Last Hour",
"url" => $this->resource_url
]
],
];
}

View File

@ -14,7 +14,9 @@ class ContainerRestarted extends Notification implements ShouldQueue
public $tries = 1;
public function __construct(public string $name, public Server $server, public ?string $url = null) {}
public function __construct(public string $name, public Server $server, public ?string $url = null)
{
}
public function via(object $notifiable): array
{
@ -23,8 +25,8 @@ public function via(object $notifiable): array
public function toMail(): MailMessage
{
$mail = new MailMessage;
$mail->subject("Coolify: A resource ({$this->name}) has been restarted automatically on {$this->server->name}");
$mail = new MailMessage();
$mail->subject("Last Hour: A resource ({$this->name}) has been restarted automatically on {$this->server->name}");
$mail->view('emails.container-restarted', [
'containerName' => $this->name,
'serverName' => $this->server->name,
@ -36,14 +38,13 @@ public function toMail(): MailMessage
public function toDiscord(): string
{
$message = "Coolify: A resource ({$this->name}) has been restarted automatically on {$this->server->name}";
$message = "Last Hour: A resource ({$this->name}) has been restarted automatically on {$this->server->name}";
return $message;
}
public function toTelegram(): array
{
$message = "Coolify: A resource ({$this->name}) has been restarted automatically on {$this->server->name}";
$message = "Last Hour: A resource ({$this->name}) has been restarted automatically on {$this->server->name}";
$payload = [
'message' => $message,
];
@ -51,10 +52,10 @@ public function toTelegram(): array
$payload['buttons'] = [
[
[
'text' => 'Check Proxy in Coolify',
'url' => $this->url,
],
],
"text" => "Check Proxy in Last Hour",
"url" => $this->url
]
]
];
}

View File

@ -14,7 +14,9 @@ class ContainerStopped extends Notification implements ShouldQueue
public $tries = 1;
public function __construct(public string $name, public Server $server, public ?string $url = null) {}
public function __construct(public string $name, public Server $server, public ?string $url = null)
{
}
public function via(object $notifiable): array
{
@ -23,8 +25,8 @@ public function via(object $notifiable): array
public function toMail(): MailMessage
{
$mail = new MailMessage;
$mail->subject("Coolify: A resource has been stopped unexpectedly on {$this->server->name}");
$mail = new MailMessage();
$mail->subject("Last Hour: A resource has been stopped unexpectedly on {$this->server->name}");
$mail->view('emails.container-stopped', [
'containerName' => $this->name,
'serverName' => $this->server->name,
@ -36,14 +38,13 @@ public function toMail(): MailMessage
public function toDiscord(): string
{
$message = "Coolify: A resource ($this->name) has been stopped unexpectedly on {$this->server->name}";
$message = "Last Hour: A resource ($this->name) has been stopped unexpectedly on {$this->server->name}";
return $message;
}
public function toTelegram(): array
{
$message = "Coolify: A resource ($this->name) has been stopped unexpectedly on {$this->server->name}";
$message = "Last Hour: A resource ($this->name) has been stopped unexpectedly on {$this->server->name}";
$payload = [
'message' => $message,
];
@ -51,10 +52,10 @@ public function toTelegram(): array
$payload['buttons'] = [
[
[
'text' => 'Open Application in Coolify',
'url' => $this->url,
],
],
"text" => "Open Application in Last Hour",
"url" => $this->url
]
]
];
}

View File

@ -33,8 +33,8 @@ public function via(object $notifiable): array
public function toMail(): MailMessage
{
$mail = new MailMessage;
$mail->subject("Coolify: [ACTION REQUIRED] Backup FAILED for {$this->database->name}");
$mail = new MailMessage();
$mail->subject("Last Hour: [ACTION REQUIRED] Backup FAILED for {$this->database->name}");
$mail->view('emails.backup-failed', [
'name' => $this->name,
'database_name' => $this->database_name,
@ -47,12 +47,12 @@ public function toMail(): MailMessage
public function toDiscord(): string
{
return "Coolify: Database backup for {$this->name} (db:{$this->database_name}) with frequency of {$this->frequency} was FAILED.\n\nReason:\n{$this->output}";
return "Last Hour: Database backup for {$this->name} (db:{$this->database_name}) with frequency of {$this->frequency} was FAILED.\n\nReason:\n{$this->output}";
}
public function toTelegram(): array
{
$message = "Coolify: Database backup for {$this->name} (db:{$this->database_name}) with frequency of {$this->frequency} was FAILED.\n\nReason:\n{$this->output}";
$message = "Last Hour: Database backup for {$this->name} (db:{$this->database_name}) with frequency of {$this->frequency} was FAILED.\n\nReason:\n{$this->output}";
return [
'message' => $message,

View File

@ -33,8 +33,8 @@ public function via(object $notifiable): array
public function toMail(): MailMessage
{
$mail = new MailMessage;
$mail->subject("Coolify: Backup successfully done for {$this->database->name}");
$mail = new MailMessage();
$mail->subject("Last Hour: Backup successfully done for {$this->database->name}");
$mail->view('emails.backup-success', [
'name' => $this->name,
'database_name' => $this->database_name,
@ -46,12 +46,12 @@ public function toMail(): MailMessage
public function toDiscord(): string
{
return "Coolify: Database backup for {$this->name} (db:{$this->database_name}) with frequency of {$this->frequency} was successful.";
return "Last Hour: Database backup for {$this->name} (db:{$this->database_name}) with frequency of {$this->frequency} was successful.";
}
public function toTelegram(): array
{
$message = "Coolify: Database backup for {$this->name} (db:{$this->database_name}) with frequency of {$this->frequency} was successful.";
$message = "Last Hour: Database backup for {$this->name} (db:{$this->database_name}) with frequency of {$this->frequency} was successful.";
ray($message);
return [

View File

@ -17,7 +17,9 @@ class HighDiskUsage extends Notification implements ShouldQueue
public $tries = 1;
public function __construct(public Server $server, public int $disk_usage, public int $cleanup_after_percentage) {}
public function __construct(public Server $server, public int $disk_usage, public int $cleanup_after_percentage)
{
}
public function via(object $notifiable): array
{
@ -41,8 +43,8 @@ public function via(object $notifiable): array
public function toMail(): MailMessage
{
$mail = new MailMessage;
$mail->subject("Coolify: Server ({$this->server->name}) high disk usage detected!");
$mail = new MailMessage();
$mail->subject("Last Hour: Server ({$this->server->name}) high disk usage detected!");
$mail->view('emails.high-disk-usage', [
'name' => $this->server->name,
'disk_usage' => $this->disk_usage,
@ -54,7 +56,7 @@ public function toMail(): MailMessage
public function toDiscord(): string
{
$message = "Coolify: Server '{$this->server->name}' high disk usage detected!\nDisk usage: {$this->disk_usage}%. Threshold: {$this->cleanup_after_percentage}%.\nPlease cleanup your disk to prevent data-loss.\nHere are some tips: https://coolify.io/docs/knowledge-base/server/automated-cleanup.";
$message = "Last Hour: Server '{$this->server->name}' high disk usage detected!\nDisk usage: {$this->disk_usage}%. Threshold: {$this->cleanup_after_percentage}%.\nPlease cleanup your disk to prevent data-loss.\nHere are some tips: https://coolify.io/docs/knowledge-base/server/automated-cleanup.";
return $message;
}
@ -62,7 +64,7 @@ public function toDiscord(): string
public function toTelegram(): array
{
return [
'message' => "Coolify: Server '{$this->server->name}' high disk usage detected!\nDisk usage: {$this->disk_usage}%. Threshold: {$this->cleanup_after_percentage}%.\nPlease cleanup your disk to prevent data-loss.\nHere are some tips: https://coolify.io/docs/knowledge-base/server/automated-cleanup.",
'message' => "Last Hour: Server '{$this->server->name}' high disk usage detected!\nDisk usage: {$this->disk_usage}%. Threshold: {$this->cleanup_after_percentage}%.\nPlease cleanup your disk to prevent data-loss.\nHere are some tips: https://coolify.io/docs/knowledge-base/server/automated-cleanup.",
];
}
}

View File

@ -50,8 +50,8 @@ public function via(object $notifiable): array
public function toMail(): MailMessage
{
$mail = new MailMessage;
$mail->subject("Coolify: Server ({$this->server->name}) revived.");
$mail = new MailMessage();
$mail->subject("Last Hour: Server ({$this->server->name}) revived.");
$mail->view('emails.server-revived', [
'name' => $this->server->name,
]);
@ -61,15 +61,14 @@ public function toMail(): MailMessage
public function toDiscord(): string
{
$message = "Coolify: Server '{$this->server->name}' revived. All automations & integrations are turned on again!";
$message = "Last Hour: Server '{$this->server->name}' revived. All automations & integrations are turned on again!";
return $message;
}
public function toTelegram(): array
{
return [
'message' => "Coolify: Server '{$this->server->name}' revived. All automations & integrations are turned on again!",
"message" => "Last Hour: Server '{$this->server->name}' revived. All automations & integrations are turned on again!"
];
}
}

View File

@ -17,7 +17,9 @@ class Unreachable extends Notification implements ShouldQueue
public $tries = 1;
public function __construct(public Server $server) {}
public function __construct(public Server $server)
{
}
public function via(object $notifiable): array
{
@ -41,8 +43,8 @@ public function via(object $notifiable): array
public function toMail(): MailMessage
{
$mail = new MailMessage;
$mail->subject("Coolify: Your server ({$this->server->name}) is unreachable.");
$mail = new MailMessage();
$mail->subject("Last Hour: Your server ({$this->server->name}) is unreachable.");
$mail->view('emails.server-lost-connection', [
'name' => $this->server->name,
]);
@ -52,15 +54,14 @@ public function toMail(): MailMessage
public function toDiscord(): string
{
$message = "Coolify: Your server '{$this->server->name}' is unreachable. All automations & integrations are turned off! Please check your server! IMPORTANT: We automatically try to revive your server and turn on all automations & integrations.";
$message = "Last Hour: Your server '{$this->server->name}' is unreachable. All automations & integrations are turned off! Please check your server! IMPORTANT: We automatically try to revive your server and turn on all automations & integrations.";
return $message;
}
public function toTelegram(): array
{
return [
'message' => "Coolify: Your server '{$this->server->name}' is unreachable. All automations & integrations are turned off! Please check your server! IMPORTANT: We automatically try to revive your server and turn on all automations & integrations.",
"message" => "Last Hour: Your server '{$this->server->name}' is unreachable. All automations & integrations are turned off! Please check your server! IMPORTANT: We automatically try to revive your server and turn on all automations & integrations."
];
}
}

View File

@ -13,7 +13,9 @@ class Test extends Notification implements ShouldQueue
public $tries = 5;
public function __construct(public ?string $emails = null) {}
public function __construct(public ?string $emails = null)
{
}
public function via(object $notifiable): array
{
@ -22,8 +24,8 @@ public function via(object $notifiable): array
public function toMail(): MailMessage
{
$mail = new MailMessage;
$mail->subject('Coolify: Test Email');
$mail = new MailMessage();
$mail->subject("Last Hour: Test Email");
$mail->view('emails.test');
return $mail;
@ -31,7 +33,7 @@ public function toMail(): MailMessage
public function toDiscord(): string
{
$message = 'Coolify: This is a test Discord notification from Coolify.';
$message = 'Last Hour: This is a test Discord notification from Last Hour.';
$message .= "\n\n";
$message .= '[Go to your dashboard](' . base_url() . ')';
@ -41,8 +43,8 @@ public function toDiscord(): string
public function toTelegram(): array
{
return [
'message' => 'Coolify: This is a test Telegram notification from Coolify.',
'buttons' => [
"message" => 'Last Hour: This is a test Telegram notification from Last Hour.',
"buttons" => [
[
'text' => 'Go to your dashboard',
'url' => base_url(),

View File

@ -22,15 +22,17 @@ public function via(): array
return [TransactionalEmailChannel::class];
}
public function __construct(public User $user) {}
public function __construct(public User $user)
{
}
public function toMail(): MailMessage
{
$invitation = TeamInvitation::whereEmail($this->user->email)->first();
$invitation_team = Team::find($invitation->team->id);
$mail = new MailMessage;
$mail->subject('Coolify: Invitation for '.$invitation_team->name);
$mail = new MailMessage();
$mail->subject('Last Hour: Invitation for ' . $invitation_team->name);
$mail->view('emails.invitation-link', [
'team' => $invitation_team->name,
'email' => $this->user->email,

View File

@ -54,7 +54,7 @@ public function toMail($notifiable)
protected function buildMailMessage($url)
{
$mail = new MailMessage;
$mail->subject('Coolify: Reset Password');
$mail->subject('Last Hour: Reset Password');
$mail->view('emails.reset-password', ['url' => $url, 'count' => config('auth.passwords.' . config('auth.defaults.passwords') . '.expire')]);
return $mail;

View File

@ -14,7 +14,9 @@ class Test extends Notification implements ShouldQueue
public $tries = 5;
public function __construct(public string $emails) {}
public function __construct(public string $emails)
{
}
public function via(): array
{
@ -23,8 +25,8 @@ public function via(): array
public function toMail(): MailMessage
{
$mail = new MailMessage;
$mail->subject('Coolify: Test Email');
$mail = new MailMessage();
$mail->subject('Last Hour: Test Email');
$mail->view('emails.test');
return $mail;

View File

@ -96,7 +96,7 @@ services:
"CMD-SHELL",
"pg_isready -U ${DB_USERNAME:-coolify}",
"-d",
"${DB_DATABASE:-coolify}"
"${DB_DATABASE:-coolify}",
]
interval: 5s
retries: 10

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 70 KiB

View File

@ -1,21 +1,22 @@
/** @type {import('tailwindcss').Config} */
const colors = {
"base": "#101010",
"warning": "#FCD452",
"success": "#16A34A",
"error": "#DC2626",
"coollabs": "#6B16ED",
base: "#101010",
warning: "#FCD452",
success: "#16A34A",
error: "#DC2626",
coollabs: "#6B16ED",
"coollabs-100": "#7317FF",
"coolgray-100": "#181818",
"coolgray-200": "#202020",
"coolgray-300": "#242424",
"coolgray-400": "#282828",
"coolgray-500": "#323232",
}
};
module.exports = {
darkMode: "selector",
content: [
'./storage/framework/views/*.php',
"./vendor/wire-elements/modal/resources/views/*.blade.php",
"./storage/framework/views/*.php",
"./resources/**/*.blade.php",
"./app/**/*.php",
"./resources/**/*.js",
@ -26,12 +27,34 @@ module.exports = {
fontFamily: {
sans: ["Inter", "sans-serif"],
},
colors
colors,
},
},
variants: {
scrollbar: ["dark"],
extend: {},
},
daisyui: {
themes: [
{
coollabs: {
primary: "#202020",
"primary-focus": "#242424",
secondary: "#00bcf3",
accent: "#4338ca",
neutral: "#1B1D1D",
"base-100": "#101010",
info: "#2563EB",
success: "#16A34A",
warning: "#FCD34D",
error: "#DC2626",
},
},
],
},
plugins: [
require("tailwindcss-scrollbar"),
require("@tailwindcss/typography"),
require("@tailwindcss/forms")
require("@tailwindcss/forms"),
],
};