From 86ee9c09cef070e0d776ad35653b397054a9c739 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 4 Sep 2024 12:28:57 +0200 Subject: [PATCH 1/6] feat: Add new logos for GlueOps, Ubicloud, Juxtdigital, Saasykit, and Massivegrid --- README.md | 50 ++++++++++++++++++++------------------ other/logos/saasykit.webp | Bin 0 -> 44522 bytes 2 files changed, 26 insertions(+), 24 deletions(-) create mode 100644 other/logos/saasykit.webp diff --git a/README.md b/README.md index 748676fa2..f89ad7b6f 100644 --- a/README.md +++ b/README.md @@ -35,27 +35,29 @@ # Donations Special thanks to our biggest sponsors! -cccareers logo -hetzner logo -logto logo -bc direct logo -quantcdn logo -arcjet logo -supaguide logo -tigris logo -fractal logo -advin logo -trieve logo -blacksmith logo -latitude logo -branddev logo -jobscollider logo -hostinger logo -glueops logo -ubicloud logo -juxtdigital logo -saasykit logo -massivegrid logo +
+cccareers logo +hetzner logo +logto logo +bc direct logo +quantcdn logo +arcjet logo +supaguide logo +tigris logo +fractal logo +advin logo +trieve logo +blacksmith logo +latitude logo +branddev logo +jobscollider logo +hostinger logo +glueops logo +ubicloud logo +juxtdigital logo +saasykit logo +massivegrid logo +
@@ -124,16 +126,16 @@ # Recognitions

Featured on Hacker News

-Coolify - An open-source & self-hostable Heroku, Netlify alternative | Product Hunt +Coolify - An open-source & self-hostable Heroku, Netlify alternative | Product Hunt -coollabsio%2Fcoolify | Trendshift +coollabsio%2Fcoolify | Trendshift # Repo Activity diff --git a/other/logos/saasykit.webp b/other/logos/saasykit.webp new file mode 100644 index 0000000000000000000000000000000000000000..0d1085e6c6671768e65867f4f25c1857a78a4d51 GIT binary patch literal 44522 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

nWD6s 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 literal 0 HcmV?d00001 From b9d3f9da628be9d919656eefd5f2bebbd3f68758 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 4 Sep 2024 12:30:02 +0200 Subject: [PATCH 2/6] chore: Update Coolify version to 4.0.0-beta.328 --- README.md | 46 +++++++++++++++++++++++----------------------- config/sentry.php | 2 +- config/version.php | 2 +- versions.json | 4 ++-- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index f89ad7b6f..9a8683fcb 100644 --- a/README.md +++ b/README.md @@ -36,27 +36,27 @@ # Donations Special thanks to our biggest sponsors!

-cccareers logo -hetzner logo -logto logo -bc direct logo -quantcdn logo -arcjet logo -supaguide logo -tigris logo -fractal logo -advin logo -trieve logo -blacksmith logo -latitude logo -branddev logo -jobscollider logo -hostinger logo +cccareers logo +hetzner logo +logto logo +bc direct logo +quantcdn logo +arcjet logo +supaguide logo +tigris logo +fractal logo +advin logo +trieve logo +blacksmith logo +latitude logo +branddev logo +jobscollider logo +hostinger logo glueops logo -ubicloud logo -juxtdigital logo -saasykit logo -massivegrid logo +ubicloud logo +juxtdigital logo +saasykit logo +massivegrid logo
@@ -126,16 +126,16 @@ # Recognitions

Featured on Hacker News

-Coolify - An open-source & self-hostable Heroku, Netlify alternative | Product Hunt +Coolify - An open-source & self-hostable Heroku, Netlify alternative | Product Hunt -coollabsio%2Fcoolify | Trendshift +coollabsio%2Fcoolify | Trendshift # Repo Activity diff --git a/config/sentry.php b/config/sentry.php index a1505137e..28fabe940 100644 --- a/config/sentry.php +++ b/config/sentry.php @@ -7,7 +7,7 @@ // The release version of your application // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD')) - 'release' => '4.0.0-beta.327', + 'release' => '4.0.0-beta.328', // When left empty or `null` the Laravel environment will be used 'environment' => config('app.env'), diff --git a/config/version.php b/config/version.php index cb9bd0622..f9078cf09 100644 --- a/config/version.php +++ b/config/version.php @@ -1,3 +1,3 @@ Date: Wed, 4 Sep 2024 12:30:53 +0200 Subject: [PATCH 3/6] refactor: Update background color of sponsor section in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9a8683fcb..ec49e29e7 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ # Donations Special thanks to our biggest sponsors! -
+
cccareers logo hetzner logo logto logo From 7b2d09f9d15633f194ce4ace5cda7d65051fde0d Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 4 Sep 2024 12:44:22 +0200 Subject: [PATCH 4/6] Update README.md --- README.md | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index ec49e29e7..997f48f8c 100644 --- a/README.md +++ b/README.md @@ -35,30 +35,31 @@ # Donations Special thanks to our biggest sponsors! -
-cccareers logo -hetzner logo -logto logo -bc direct logo -quantcdn logo -arcjet logo -supaguide logo -tigris logo -fractal logo -advin logo -trieve logo -blacksmith logo -latitude logo -branddev logo -jobscollider logo -hostinger logo -glueops logo -ubicloud logo -juxtdigital logo -saasykit logo -massivegrid logo -
+### Special Sponsors +![image](https://github.com/user-attachments/assets/c95a07df-7c5a-4e77-a35a-81f25fcbece1) + +* [CCCareers](https://cccareers.org/) - A career development platform for coding bootcamp graduates. +* [Hetzner](http://htznr.li/CoolifyXHetzner) - A German web hosting company offering dedicated servers and cloud services. +* [Logto](https://logto.io/?ref=coolify) - An open-source authentication and authorization platform. +* [BC Direct](https://bc.direct/?ref=coolify.io) - A digital marketing agency specializing in e-commerce solutions. +* [QuantCDN](https://www.quantcdn.io/?ref=coolify.io) - A content delivery network (CDN) for fast content delivery. +* [Arcjet](https://arcjet.com/?ref=coolify.io) - A cloud-based platform for data analytics and visualization. +* [SupaGuide](https://supa.guide/?ref=coolify.io) - A platform offering guides and resources for web development and design. +* [Tigris](https://tigrisdata.com/?ref=coolify.io) - A data integration platform for connecting and managing data sources. +* [Fractal Networks](https://fractalnetworks.co/?ref=coolify.io) - A decentralized network infrastructure for secure data exchange. +* [Advin](https://coolify.ad.vin/?ref=coolify.io) - A digital advertising agency specializing in programmatic advertising. +* [Treive](https://trieve.ai/?ref=coolify.io) - An AI-powered data analytics platform for business insights. +* [Blacksmith](https://blacksmith.sh/?ref=coolify.io) - A cloud-based platform for automating DevOps and infrastructure management. +* [Latitude](https://latitude.sh/?ref=coolify.io) - A platform offering location-based services and geospatial data. +* [Brand Dev](https://brand.dev/?ref=coolify.io) - A web development agency specializing in brand identity and digital presence. +* [Jobscollider](https://jobscollider.com/remote-jobs?ref=coolify.io) - A job search platform specializing in remote and flexible work opportunities. +* [Hostinger](https://hostinger.com?ref=coolify.io) - A web hosting company offering shared, VPS, and cloud hosting services. +* [Glueops](https://www.glueops.dev/?ref=coolify.io) - A DevOps and cloud consulting company offering infrastructure automation services. +* [Ubicloud](https://ubicloud.com/?ref=coolify.io) - A cloud-based platform for IoT device management and data analytics. +* [Juxtdigital](https://juxtdigital.dev/?ref=coolify.io) - A digital agency offering web development, design, and marketing services. +* [Saasykit](https://saasykit.com/?ref=coolify.io) - A platform offering SaaS solutions for business automation and growth. +* [Massivegrid](https://massivegrid.com/?ref=coolify.io) - A cloud-based platform for data storage and processing. ## Github Sponsors ($40+) From 59383d3678d0dfcb53879f4db7c0f39f8cb8cf3c Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 4 Sep 2024 13:04:09 +0200 Subject: [PATCH 5/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 997f48f8c..05f2e2b3c 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ ### Special Sponsors * [Glueops](https://www.glueops.dev/?ref=coolify.io) - A DevOps and cloud consulting company offering infrastructure automation services. * [Ubicloud](https://ubicloud.com/?ref=coolify.io) - A cloud-based platform for IoT device management and data analytics. * [Juxtdigital](https://juxtdigital.dev/?ref=coolify.io) - A digital agency offering web development, design, and marketing services. -* [Saasykit](https://saasykit.com/?ref=coolify.io) - A platform offering SaaS solutions for business automation and growth. +* [Saasykit](https://saasykit.com/?ref=coolify.io) - SaaSykit is a Laravel-based boilerplate with everything you need to build an awesome SaaS. * [Massivegrid](https://massivegrid.com/?ref=coolify.io) - A cloud-based platform for data storage and processing. From 25e2b812cb6f0940695a035decfb76607cad8312 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 4 Sep 2024 13:37:15 +0200 Subject: [PATCH 6/6] fix: Convert environment variables to one format in shared.php --- bootstrap/helpers/shared.php | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/bootstrap/helpers/shared.php b/bootstrap/helpers/shared.php index 7ef02fff9..b21ceac31 100644 --- a/bootstrap/helpers/shared.php +++ b/bootstrap/helpers/shared.php @@ -3206,6 +3206,7 @@ function newParser(Application|Service $resource, int $pull_request_id = 0, ?int } } // convert environment variables to one format + ray($environment); $environment = convertComposeEnvironmentToArray($environment); // Add Coolify defined environments @@ -3639,37 +3640,22 @@ function add_coolify_default_environment_variables(StandaloneRedis|StandalonePos $where_to_add->push("COOLIFY_PROJECT_NAME={$resource->project()->name}"); } } - ray($where_to_add); } function convertComposeEnvironmentToArray($environment) { $convertedServiceVariables = collect([]); - foreach ($environment as $variableName => $variableValue) { - if (is_array($variableValue)) { - $key = str(collect($variableValue)->keys()->first()); - $value = str(collect($variableValue)->values()->first()); - } elseif (is_string($variableValue)) { - if (str($variableValue)->contains('=')) { - $key = str($variableValue)->before('='); - $value = str($variableValue)->after('='); - } else { - if (is_numeric($variableName)) { - $key = str($variableValue); - $value = null; - } else { - $key = str($variableName); - if ($variableValue) { - $value = str($variableValue); - } else { - $value = null; - } - } + if (isAssociativeArray($environment)) { + $convertedServiceVariables = $environment; + } else { + foreach ($environment as $value) { + $parts = explode('=', $value, 2); + $key = $parts[0]; + $realValue = $parts[1] ?? ''; + if ($key) { + $convertedServiceVariables->put($key, $realValue); } } - if ($key) { - $convertedServiceVariables->put($key->value(), $value?->value() ?? null); - } } return $convertedServiceVariables;