From 6496cfa7df679d4a71358f357f579a6a46af18e5 Mon Sep 17 00:00:00 2001
From: ShadowArcanist <162910371+ShadowArcanist@users.noreply.github.com>
Date: Thu, 6 Aug 2026 13:04:00 +0530
Subject: [PATCH 1/6] feat(ui): show reicon fallback for services without a
logo
---
app/Livewire/Project/New/Select.php | 7 ++++++-
resources/views/livewire/project/new/select.blade.php | 9 +++++----
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/app/Livewire/Project/New/Select.php b/app/Livewire/Project/New/Select.php
index 05107a105..b2c141ea8 100644
--- a/app/Livewire/Project/New/Select.php
+++ b/app/Livewire/Project/New/Select.php
@@ -121,7 +121,11 @@ class Select extends Component
}
}
- if (! is_string($logo) || ! file_exists(public_path($logo))) {
+ $hasLogo = is_string($logo)
+ && basename($logo) !== basename($default_logo)
+ && file_exists(public_path($logo));
+
+ if (! $hasLogo) {
$logo = $default_logo;
}
@@ -132,6 +136,7 @@ class Select extends Component
'id' => $serviceKey,
'name' => str($serviceKey)->headline(),
'docsSlug' => str($serviceKey)->lower()->value(),
+ 'has_logo' => $hasLogo,
'logo' => asset($logo),
'logo_github_url' => file_exists($local_logo_path)
? 'https://raw.githubusercontent.com/coollabsio/coolify/refs/heads/main/public/'.$logo
diff --git a/resources/views/livewire/project/new/select.blade.php b/resources/views/livewire/project/new/select.blade.php
index 1567a52ec..b97e1d8f6 100644
--- a/resources/views/livewire/project/new/select.blade.php
+++ b/resources/views/livewire/project/new/select.blade.php
@@ -266,13 +266,14 @@
-
+
+ :data-fallback="service.logo_github_url" />
-
-
+
+
From 987d675bdca7f05dc78b02f355a3103cfd8c32d5 Mon Sep 17 00:00:00 2001
From: ShadowArcanist <162910371+ShadowArcanist@users.noreply.github.com>
Date: Thu, 6 Aug 2026 15:46:12 +0530
Subject: [PATCH 2/6] refactor(ui): fill resource logo tiles and support
light/dark logo variants
---
.../livewire/project/new/select.blade.php | 31 ++++++++++++++++---
1 file changed, 26 insertions(+), 5 deletions(-)
diff --git a/resources/views/livewire/project/new/select.blade.php b/resources/views/livewire/project/new/select.blade.php
index b97e1d8f6..8efb6ed92 100644
--- a/resources/views/livewire/project/new/select.blade.php
+++ b/resources/views/livewire/project/new/select.blade.php
@@ -119,7 +119,17 @@
-
![]()
+
-
+
-
+
+
+
+
+
+
+
+
+
+
Date: Thu, 6 Aug 2026 15:46:12 +0530
Subject: [PATCH 3/6] feat(ui): add tile icon set for the resource picker
---
public/svgs/resources/clickhouse.svg | 4 ++++
public/svgs/resources/deploy-key.svg | 4 ++++
public/svgs/resources/docker-compose.svg | 10 ++++++++++
public/svgs/resources/docker-image.svg | 11 +++++++++++
public/svgs/resources/dockerfile.svg | 11 +++++++++++
public/svgs/resources/dragonfly-dark.svg | 4 ++++
public/svgs/resources/dragonfly.svg | 4 ++++
public/svgs/resources/github-app-dark.svg | 4 ++++
public/svgs/resources/github-app.svg | 4 ++++
public/svgs/resources/gitlab-app.svg | 4 ++++
public/svgs/resources/keydb-dark.svg | 4 ++++
public/svgs/resources/keydb.svg | 4 ++++
public/svgs/resources/mariadb.svg | 10 ++++++++++
public/svgs/resources/mongodb.svg | 4 ++++
public/svgs/resources/mysql.svg | 5 +++++
public/svgs/resources/postgres.svg | 21 +++++++++++++++++++++
public/svgs/resources/public-repo.svg | 4 ++++
public/svgs/resources/redis.svg | 19 +++++++++++++++++++
18 files changed, 131 insertions(+)
create mode 100644 public/svgs/resources/clickhouse.svg
create mode 100644 public/svgs/resources/deploy-key.svg
create mode 100644 public/svgs/resources/docker-compose.svg
create mode 100644 public/svgs/resources/docker-image.svg
create mode 100644 public/svgs/resources/dockerfile.svg
create mode 100644 public/svgs/resources/dragonfly-dark.svg
create mode 100644 public/svgs/resources/dragonfly.svg
create mode 100644 public/svgs/resources/github-app-dark.svg
create mode 100644 public/svgs/resources/github-app.svg
create mode 100644 public/svgs/resources/gitlab-app.svg
create mode 100644 public/svgs/resources/keydb-dark.svg
create mode 100644 public/svgs/resources/keydb.svg
create mode 100644 public/svgs/resources/mariadb.svg
create mode 100644 public/svgs/resources/mongodb.svg
create mode 100644 public/svgs/resources/mysql.svg
create mode 100644 public/svgs/resources/postgres.svg
create mode 100644 public/svgs/resources/public-repo.svg
create mode 100644 public/svgs/resources/redis.svg
diff --git a/public/svgs/resources/clickhouse.svg b/public/svgs/resources/clickhouse.svg
new file mode 100644
index 000000000..0d084af5d
--- /dev/null
+++ b/public/svgs/resources/clickhouse.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/svgs/resources/deploy-key.svg b/public/svgs/resources/deploy-key.svg
new file mode 100644
index 000000000..a1ef1f783
--- /dev/null
+++ b/public/svgs/resources/deploy-key.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/svgs/resources/docker-compose.svg b/public/svgs/resources/docker-compose.svg
new file mode 100644
index 000000000..0101ad46c
--- /dev/null
+++ b/public/svgs/resources/docker-compose.svg
@@ -0,0 +1,10 @@
+
diff --git a/public/svgs/resources/docker-image.svg b/public/svgs/resources/docker-image.svg
new file mode 100644
index 000000000..28b300a9c
--- /dev/null
+++ b/public/svgs/resources/docker-image.svg
@@ -0,0 +1,11 @@
+
diff --git a/public/svgs/resources/dockerfile.svg b/public/svgs/resources/dockerfile.svg
new file mode 100644
index 000000000..f4a3efb11
--- /dev/null
+++ b/public/svgs/resources/dockerfile.svg
@@ -0,0 +1,11 @@
+
diff --git a/public/svgs/resources/dragonfly-dark.svg b/public/svgs/resources/dragonfly-dark.svg
new file mode 100644
index 000000000..f7353412c
--- /dev/null
+++ b/public/svgs/resources/dragonfly-dark.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/svgs/resources/dragonfly.svg b/public/svgs/resources/dragonfly.svg
new file mode 100644
index 000000000..9fab4286f
--- /dev/null
+++ b/public/svgs/resources/dragonfly.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/svgs/resources/github-app-dark.svg b/public/svgs/resources/github-app-dark.svg
new file mode 100644
index 000000000..0cd906f71
--- /dev/null
+++ b/public/svgs/resources/github-app-dark.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/svgs/resources/github-app.svg b/public/svgs/resources/github-app.svg
new file mode 100644
index 000000000..9ad7a40ae
--- /dev/null
+++ b/public/svgs/resources/github-app.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/svgs/resources/gitlab-app.svg b/public/svgs/resources/gitlab-app.svg
new file mode 100644
index 000000000..d30b9de62
--- /dev/null
+++ b/public/svgs/resources/gitlab-app.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/svgs/resources/keydb-dark.svg b/public/svgs/resources/keydb-dark.svg
new file mode 100644
index 000000000..5270a2481
--- /dev/null
+++ b/public/svgs/resources/keydb-dark.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/svgs/resources/keydb.svg b/public/svgs/resources/keydb.svg
new file mode 100644
index 000000000..c057c649d
--- /dev/null
+++ b/public/svgs/resources/keydb.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/svgs/resources/mariadb.svg b/public/svgs/resources/mariadb.svg
new file mode 100644
index 000000000..abcbe3e3e
--- /dev/null
+++ b/public/svgs/resources/mariadb.svg
@@ -0,0 +1,10 @@
+
diff --git a/public/svgs/resources/mongodb.svg b/public/svgs/resources/mongodb.svg
new file mode 100644
index 000000000..adb8e1f55
--- /dev/null
+++ b/public/svgs/resources/mongodb.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/svgs/resources/mysql.svg b/public/svgs/resources/mysql.svg
new file mode 100644
index 000000000..af476da03
--- /dev/null
+++ b/public/svgs/resources/mysql.svg
@@ -0,0 +1,5 @@
+
diff --git a/public/svgs/resources/postgres.svg b/public/svgs/resources/postgres.svg
new file mode 100644
index 000000000..cc4f5f13f
--- /dev/null
+++ b/public/svgs/resources/postgres.svg
@@ -0,0 +1,21 @@
+
diff --git a/public/svgs/resources/public-repo.svg b/public/svgs/resources/public-repo.svg
new file mode 100644
index 000000000..d3809788f
--- /dev/null
+++ b/public/svgs/resources/public-repo.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/svgs/resources/redis.svg b/public/svgs/resources/redis.svg
new file mode 100644
index 000000000..fe67b6169
--- /dev/null
+++ b/public/svgs/resources/redis.svg
@@ -0,0 +1,19 @@
+
From e14f1195f1a49e6097d9eff3ac1d0d3a19feed19 Mon Sep 17 00:00:00 2001
From: ShadowArcanist <162910371+ShadowArcanist@users.noreply.github.com>
Date: Thu, 6 Aug 2026 15:46:12 +0530
Subject: [PATCH 4/6] feat(ui): use dedicated tile icons for application and
database resources
---
app/Livewire/Project/New/Select.php | 38 ++++++++++++++---------------
1 file changed, 18 insertions(+), 20 deletions(-)
diff --git a/app/Livewire/Project/New/Select.php b/app/Livewire/Project/New/Select.php
index b2c141ea8..c565f401d 100644
--- a/app/Livewire/Project/New/Select.php
+++ b/app/Livewire/Project/New/Select.php
@@ -180,27 +180,28 @@ class Select extends Component
'name' => 'Public Repository',
'description' => 'Connect any public Git repository and let Coolify build and deploy it from source.',
'documentation' => 'https://coolify.io/docs/applications/ci-cd',
- 'logo' => asset('svgs/git.svg'),
+ 'logo' => asset('svgs/resources/public-repo.svg'),
],
[
'id' => 'private-gh-app',
'name' => 'Private Repository (with GitHub App)',
'description' => 'Deploy a private GitHub repository with automatic webhooks and pull request support.',
'documentation' => 'https://coolify.io/docs/applications/ci-cd/github/setup-app',
- 'logo' => asset('svgs/github.svg'),
+ 'logo' => asset('svgs/resources/github-app.svg'),
+ 'logoDark' => asset('svgs/resources/github-app-dark.svg'),
],
[
'id' => 'private-gitlab-app',
'name' => 'Private Repository (with GitLab App)',
'description' => 'You can deploy public & private repositories through your GitLab Apps.',
- 'logo' => asset('svgs/gitlab.svg'),
+ 'logo' => asset('svgs/resources/gitlab-app.svg'),
],
[
'id' => 'private-deploy-key',
'name' => 'Private Repository (with Deploy Key)',
'description' => 'Connect a private Git repository over SSH using a repository-scoped deploy key.',
'documentation' => 'https://coolify.io/docs/applications/ci-cd/github/deploy-key',
- 'logo' => asset('svgs/git.svg'),
+ 'logo' => asset('svgs/resources/deploy-key.svg'),
],
];
$dockerBasedApplications = [
@@ -209,21 +210,21 @@ class Select extends Component
'name' => 'Dockerfile',
'description' => 'Build and deploy an application from a Dockerfile without connecting a Git repository.',
'documentation' => 'https://coolify.io/docs/applications/build-packs/dockerfile',
- 'logo' => asset('svgs/docker.svg'),
+ 'logo' => asset('svgs/resources/dockerfile.svg'),
],
[
'id' => 'docker-compose-empty',
'name' => 'Docker Compose Empty',
'description' => 'Create a multi-container application and provide the Docker Compose definition manually.',
'documentation' => 'https://coolify.io/docs/applications/build-packs/docker-compose',
- 'logo' => asset('svgs/docker.svg'),
+ 'logo' => asset('svgs/resources/docker-compose.svg'),
],
[
'id' => 'docker-image',
'name' => 'Docker Image',
'description' => 'Run a prebuilt image from Docker Hub or another compatible container registry.',
'documentation' => 'https://coolify.io/docs/applications',
- 'logo' => asset('svgs/docker.svg'),
+ 'logo' => asset('svgs/resources/docker-image.svg'),
],
];
$databases = [
@@ -231,55 +232,52 @@ class Select extends Component
'id' => 'postgresql',
'name' => 'PostgreSQL',
'description' => 'PostgreSQL is an object-relational database known for its robustness, advanced features, and strong standards compliance.',
- 'logo' => '
-',
+ 'logo' => asset('svgs/resources/postgres.svg'),
],
[
'id' => 'mysql',
'name' => 'MySQL',
'description' => 'MySQL is an open-source relational database management system. ',
- 'logo' => '',
+ 'logo' => asset('svgs/resources/mysql.svg'),
],
[
'id' => 'mariadb',
'name' => 'MariaDB',
'description' => 'MariaDB is a community-developed, commercially supported fork of the MySQL relational database management system, intended to remain free and open-source.',
- 'logo' => '',
+ 'logo' => asset('svgs/resources/mariadb.svg'),
],
[
'id' => 'redis',
'name' => 'Redis',
'description' => 'Redis is a source-available, in-memory storage, used as a distributed, in-memory key–value database, cache and message broker, with optional durability.',
- 'logo' => '',
+ 'logo' => asset('svgs/resources/redis.svg'),
],
[
'id' => 'keydb',
'name' => 'KeyDB',
'description' => 'KeyDB is a database that offers high performance, low latency, and scalability for various data structures and workloads.',
- 'logo' => ' ',
+ 'logo' => asset('svgs/resources/keydb.svg'),
+ 'logoDark' => asset('svgs/resources/keydb-dark.svg'),
],
[
'id' => 'dragonfly',
'name' => 'Dragonfly',
'description' => 'Dragonfly DB is a drop-in Redis replacement that delivers 25x more throughput and 12x faster snapshotting than Redis.',
- 'logo' => '',
+ 'logo' => asset('svgs/resources/dragonfly.svg'),
+ 'logoDark' => asset('svgs/resources/dragonfly-dark.svg'),
],
[
'id' => 'mongodb',
'name' => 'MongoDB',
'description' => 'MongoDB is a source-available, cross-platform, document-oriented database program.',
- 'logo' => '',
+ 'logo' => asset('svgs/resources/mongodb.svg'),
],
[
'id' => 'clickhouse',
'name' => 'ClickHouse',
'description' => 'ClickHouse is a column-oriented database that supports real-time analytics, business intelligence, observability, ML and GenAI, and more.',
- 'logo' => '
',
+ 'logo' => asset('svgs/resources/clickhouse.svg'),
],
];
From 5efee2949420cc0f5db28550696407851c816a43 Mon Sep 17 00:00:00 2001
From: ShadowArcanist <162910371+ShadowArcanist@users.noreply.github.com>
Date: Thu, 6 Aug 2026 18:45:29 +0530
Subject: [PATCH 5/6] feat(ui): reorder git application types to surface deploy
key earlier
---
app/Livewire/Project/New/Select.php | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/app/Livewire/Project/New/Select.php b/app/Livewire/Project/New/Select.php
index c565f401d..660ad8e62 100644
--- a/app/Livewire/Project/New/Select.php
+++ b/app/Livewire/Project/New/Select.php
@@ -182,6 +182,13 @@ class Select extends Component
'documentation' => 'https://coolify.io/docs/applications/ci-cd',
'logo' => asset('svgs/resources/public-repo.svg'),
],
+ [
+ 'id' => 'private-deploy-key',
+ 'name' => 'Private Repository (with Deploy Key)',
+ 'description' => 'Connect a private Git repository over SSH using a repository-scoped deploy key.',
+ 'documentation' => 'https://coolify.io/docs/applications/ci-cd/github/deploy-key',
+ 'logo' => asset('svgs/resources/deploy-key.svg'),
+ ],
[
'id' => 'private-gh-app',
'name' => 'Private Repository (with GitHub App)',
@@ -196,13 +203,6 @@ class Select extends Component
'description' => 'You can deploy public & private repositories through your GitLab Apps.',
'logo' => asset('svgs/resources/gitlab-app.svg'),
],
- [
- 'id' => 'private-deploy-key',
- 'name' => 'Private Repository (with Deploy Key)',
- 'description' => 'Connect a private Git repository over SSH using a repository-scoped deploy key.',
- 'documentation' => 'https://coolify.io/docs/applications/ci-cd/github/deploy-key',
- 'logo' => asset('svgs/resources/deploy-key.svg'),
- ],
];
$dockerBasedApplications = [
[
From 03c6eb7b47726293eb44f86c53f19d393853150a Mon Sep 17 00:00:00 2001
From: ShadowArcanist <162910371+ShadowArcanist@users.noreply.github.com>
Date: Thu, 6 Aug 2026 19:52:27 +0530
Subject: [PATCH 6/6] feat(ui): rewrite resource picker titles and descriptions
---
app/Livewire/Project/New/Select.php | 40 ++++++++++++++---------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/app/Livewire/Project/New/Select.php b/app/Livewire/Project/New/Select.php
index 660ad8e62..4cffff800 100644
--- a/app/Livewire/Project/New/Select.php
+++ b/app/Livewire/Project/New/Select.php
@@ -177,30 +177,30 @@ class Select extends Component
$gitBasedApplications = [
[
'id' => 'public',
- 'name' => 'Public Repository',
- 'description' => 'Connect any public Git repository and let Coolify build and deploy it from source.',
+ 'name' => 'Public Git Repository',
+ 'description' => 'Deploy any public Git repository. Coolify builds it from source, no credentials required.',
'documentation' => 'https://coolify.io/docs/applications/ci-cd',
'logo' => asset('svgs/resources/public-repo.svg'),
],
[
'id' => 'private-deploy-key',
- 'name' => 'Private Repository (with Deploy Key)',
- 'description' => 'Connect a private Git repository over SSH using a repository-scoped deploy key.',
+ 'name' => 'Private Git Repository (with Deploy Key)',
+ 'description' => 'Deploy a private repository over SSH with a repository-scoped deploy key. Set the URL and branch manually, no automatic deploys.',
'documentation' => 'https://coolify.io/docs/applications/ci-cd/github/deploy-key',
'logo' => asset('svgs/resources/deploy-key.svg'),
],
[
'id' => 'private-gh-app',
- 'name' => 'Private Repository (with GitHub App)',
- 'description' => 'Deploy a private GitHub repository with automatic webhooks and pull request support.',
+ 'name' => 'Git Repository (with GitHub App)',
+ 'description' => 'Deploy public or private GitHub repositories through a GitHub App, with automatic webhooks and pull request previews.',
'documentation' => 'https://coolify.io/docs/applications/ci-cd/github/setup-app',
'logo' => asset('svgs/resources/github-app.svg'),
'logoDark' => asset('svgs/resources/github-app-dark.svg'),
],
[
'id' => 'private-gitlab-app',
- 'name' => 'Private Repository (with GitLab App)',
- 'description' => 'You can deploy public & private repositories through your GitLab Apps.',
+ 'name' => 'Git Repository (with GitLab App)',
+ 'description' => 'Deploy public or private GitLab projects through a GitLab App, with automatic webhooks and merge request previews.',
'logo' => asset('svgs/resources/gitlab-app.svg'),
],
];
@@ -208,21 +208,21 @@ class Select extends Component
[
'id' => 'dockerfile',
'name' => 'Dockerfile',
- 'description' => 'Build and deploy an application from a Dockerfile without connecting a Git repository.',
+ 'description' => 'Deploy an application using a Dockerfile, without a Git repository.',
'documentation' => 'https://coolify.io/docs/applications/build-packs/dockerfile',
'logo' => asset('svgs/resources/dockerfile.svg'),
],
[
'id' => 'docker-compose-empty',
- 'name' => 'Docker Compose Empty',
- 'description' => 'Create a multi-container application and provide the Docker Compose definition manually.',
+ 'name' => 'Docker Compose',
+ 'description' => 'Deploy a multi-container application using a Docker Compose file, without a Git repository.',
'documentation' => 'https://coolify.io/docs/applications/build-packs/docker-compose',
'logo' => asset('svgs/resources/docker-compose.svg'),
],
[
'id' => 'docker-image',
'name' => 'Docker Image',
- 'description' => 'Run a prebuilt image from Docker Hub or another compatible container registry.',
+ 'description' => 'Deploy an application using a prebuilt image from any Docker registry, without a Git repository.',
'documentation' => 'https://coolify.io/docs/applications',
'logo' => asset('svgs/resources/docker-image.svg'),
],
@@ -231,52 +231,52 @@ class Select extends Component
[
'id' => 'postgresql',
'name' => 'PostgreSQL',
- 'description' => 'PostgreSQL is an object-relational database known for its robustness, advanced features, and strong standards compliance.',
+ 'description' => 'A relational database with strong SQL standards support and extensibility.',
'logo' => asset('svgs/resources/postgres.svg'),
],
[
'id' => 'mysql',
'name' => 'MySQL',
- 'description' => 'MySQL is an open-source relational database management system. ',
+ 'description' => 'A relational database for web and general-purpose applications.',
'logo' => asset('svgs/resources/mysql.svg'),
],
[
'id' => 'mariadb',
'name' => 'MariaDB',
- 'description' => 'MariaDB is a community-developed, commercially supported fork of the MySQL relational database management system, intended to remain free and open-source.',
+ 'description' => 'A relational database and drop-in replacement for MySQL.',
'logo' => asset('svgs/resources/mariadb.svg'),
],
[
'id' => 'redis',
'name' => 'Redis',
- 'description' => 'Redis is a source-available, in-memory storage, used as a distributed, in-memory key–value database, cache and message broker, with optional durability.',
+ 'description' => 'An in-memory key-value store used as a database, cache, and message broker.',
'logo' => asset('svgs/resources/redis.svg'),
],
[
'id' => 'keydb',
'name' => 'KeyDB',
- 'description' => 'KeyDB is a database that offers high performance, low latency, and scalability for various data structures and workloads.',
+ 'description' => 'A multithreaded, Redis-compatible in-memory store.',
'logo' => asset('svgs/resources/keydb.svg'),
'logoDark' => asset('svgs/resources/keydb-dark.svg'),
],
[
'id' => 'dragonfly',
'name' => 'Dragonfly',
- 'description' => 'Dragonfly DB is a drop-in Redis replacement that delivers 25x more throughput and 12x faster snapshotting than Redis.',
+ 'description' => 'An in-memory datastore compatible with Redis and Memcached.',
'logo' => asset('svgs/resources/dragonfly.svg'),
'logoDark' => asset('svgs/resources/dragonfly-dark.svg'),
],
[
'id' => 'mongodb',
'name' => 'MongoDB',
- 'description' => 'MongoDB is a source-available, cross-platform, document-oriented database program.',
+ 'description' => 'A document-oriented NoSQL database that stores JSON-like documents.',
'logo' => asset('svgs/resources/mongodb.svg'),
],
[
'id' => 'clickhouse',
'name' => 'ClickHouse',
- 'description' => 'ClickHouse is a column-oriented database that supports real-time analytics, business intelligence, observability, ML and GenAI, and more.',
+ 'description' => 'A column-oriented database for real-time analytics over large datasets.',
'logo' => asset('svgs/resources/clickhouse.svg'),
],