You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2023/09/13 14:16:34 UTC

[camel-karavan] branch main updated (563ad0fb -> 685158db)

This is an automated email from the ASF dual-hosted git repository.

marat pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git


    from 563ad0fb Script editor for #885
     new ec5b0ff8 Camel-main runtime only for #885
     new 685158db Fix issues run in Docker for #885

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/camel/karavan/api/ImagesResource.java   |  9 ++-
 .../apache/camel/karavan/api/ProjectResource.java  |  5 --
 .../org/apache/camel/karavan/code/CodeService.java | 66 ++++------------------
 .../camel/karavan/docker/DockerForKaravan.java     | 15 ++++-
 .../apache/camel/karavan/docker/DockerService.java | 27 +--------
 .../camel/karavan/infinispan/model/Project.java    | 21 ++-----
 .../karavan/kubernetes/KubernetesService.java      |  5 +-
 .../camel/karavan/registry/RegistryService.java    | 10 ++--
 .../camel/karavan/service/ConfigService.java       | 13 +----
 .../karavan/service/ContainerStatusService.java    |  2 +-
 .../camel/karavan/service/ProjectService.java      | 28 ++++-----
 .../apache/camel/karavan/shared/Configuration.java | 22 +-------
 .../org/apache/camel/karavan/shared/Constants.java |  1 -
 .../src/main/resources/application.properties      |  2 -
 ...on.properties => docker-application.properties} |  0
 ...in-builder-script-docker.sh => docker-build.sh} |  0
 .../{project-compose.yaml => docker-compose.yaml}  |  0
 ...roperties => kubernetes-application.properties} |  0
 ...er-script-kubernetes.sh => kubernetes-build.sh} |  0
 ...properties => openshift-application.properties} |  0
 ...lder-script-openshift.sh => openshift-build.sh} |  0
 ...a => org.apache.camel.AggregationStrategy.java} |  0
 ...cessor.java => org.apache.camel.Processor.java} |  0
 .../snippets/quarkus-builder-script-docker.sh      | 32 -----------
 .../snippets/quarkus-builder-script-kubernetes.sh  | 39 -------------
 .../snippets/quarkus-builder-script-openshift.sh   | 41 --------------
 .../snippets/quarkus-docker-application.properties | 10 ----
 .../quarkus-kubernetes-application.properties      | 15 -----
 .../quarkus-openshift-application.properties       | 17 ------
 ...arkus-org.apache.camel.AggregationStrategy.java | 23 --------
 .../quarkus-org.apache.camel.Processor.java        | 14 -----
 .../snippets/spring-boot-builder-script-docker.sh  | 32 -----------
 .../spring-boot-builder-script-kubernetes.sh       | 31 ----------
 .../spring-boot-builder-script-openshift.sh        | 29 ----------
 .../spring-boot-docker-application.properties      | 15 -----
 .../spring-boot-kubernetes-application.properties  | 20 -------
 .../spring-boot-openshift-application.properties   | 21 -------
 ...-boot-org.apache.camel.AggregationStrategy.java | 20 -------
 .../spring-boot-org.apache.camel.Processor.java    | 12 ----
 .../src/main/webui/src/api/ProjectModels.ts        | 12 ++--
 .../src/main/webui/src/api/ProjectService.ts       |  4 +-
 .../webui/src/knowledgebase/KnowledgebasePage.tsx  | 23 ++------
 .../main/webui/src/project/build/BuildPanel.tsx    | 23 ++++++--
 .../main/webui/src/project/build/ImagesPanel.tsx   |  2 +-
 .../src/project/container/ProjectContainerTab.tsx  | 14 +++--
 .../src/main/webui/src/project/files/FilesTab.tsx  |  2 +-
 .../main/webui/src/projects/CreateProjectModal.tsx | 40 +------------
 .../src/main/webui/src/projects/ProjectsPage.tsx   |  1 -
 .../main/webui/src/projects/ProjectsTableRow.tsx   | 11 ----
 .../main/webui/src/services/CreateServiceModal.tsx | 19 +------
 .../webui/src/templates/CreateProjectModal.tsx     | 40 +------------
 .../main/webui/src/templates/TemplatesTableRow.tsx |  1 -
 52 files changed, 101 insertions(+), 688 deletions(-)
 rename karavan-web/karavan-app/src/main/resources/snippets/{camel-main-docker-application.properties => docker-application.properties} (100%)
 rename karavan-web/karavan-app/src/main/resources/snippets/{camel-main-builder-script-docker.sh => docker-build.sh} (100%)
 rename karavan-web/karavan-app/src/main/resources/snippets/{project-compose.yaml => docker-compose.yaml} (100%)
 rename karavan-web/karavan-app/src/main/resources/snippets/{camel-main-kubernetes-application.properties => kubernetes-application.properties} (100%)
 rename karavan-web/karavan-app/src/main/resources/snippets/{camel-main-builder-script-kubernetes.sh => kubernetes-build.sh} (100%)
 rename karavan-web/karavan-app/src/main/resources/snippets/{camel-main-openshift-application.properties => openshift-application.properties} (100%)
 rename karavan-web/karavan-app/src/main/resources/snippets/{camel-main-builder-script-openshift.sh => openshift-build.sh} (100%)
 rename karavan-web/karavan-app/src/main/resources/snippets/{camel-main-org.apache.camel.AggregationStrategy.java => org.apache.camel.AggregationStrategy.java} (100%)
 rename karavan-web/karavan-app/src/main/resources/snippets/{camel-main-org.apache.camel.Processor.java => org.apache.camel.Processor.java} (100%)
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/quarkus-builder-script-docker.sh
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/quarkus-builder-script-kubernetes.sh
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/quarkus-builder-script-openshift.sh
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/quarkus-docker-application.properties
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/quarkus-kubernetes-application.properties
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/quarkus-openshift-application.properties
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/quarkus-org.apache.camel.AggregationStrategy.java
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/quarkus-org.apache.camel.Processor.java
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/spring-boot-builder-script-docker.sh
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/spring-boot-builder-script-kubernetes.sh
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/spring-boot-builder-script-openshift.sh
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/spring-boot-docker-application.properties
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/spring-boot-kubernetes-application.properties
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/spring-boot-openshift-application.properties
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/spring-boot-org.apache.camel.AggregationStrategy.java
 delete mode 100644 karavan-web/karavan-app/src/main/resources/snippets/spring-boot-org.apache.camel.Processor.java


[camel-karavan] 02/02: Fix issues run in Docker for #885

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit 685158db0477a3064bcfd5f507a3bf786059910b
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Wed Sep 13 10:16:14 2023 -0400

    Fix issues run in Docker for #885
---
 .../apache/camel/karavan/api/ImagesResource.java   |  9 +++++---
 .../apache/camel/karavan/docker/DockerService.java | 27 ++--------------------
 .../camel/karavan/registry/RegistryService.java    | 10 ++++----
 .../src/project/container/ProjectContainerTab.tsx  | 14 ++++++-----
 4 files changed, 20 insertions(+), 40 deletions(-)

diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ImagesResource.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ImagesResource.java
index 4d613aaa..21b0d6ba 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ImagesResource.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ImagesResource.java
@@ -48,12 +48,15 @@ public class ImagesResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/{projectId}")
     public List<String> getImagesForProject(@HeaderParam("username") String username,
-                                 @PathParam("projectId") String projectId) throws IOException {
-        String pattern = registryService.getRegistryWithGroup() + "/" + projectId;
+                                 @PathParam("projectId") String projectId) {
+
+        RegistryConfig registryConfig = registryService.getRegistryConfig();
+        String pattern = registryConfig.getGroup() + "/" + projectId;
         if (ConfigService.inKubernetes()) {
             return List.of();
         } else {
-            return dockerService.getImages().stream().filter(s -> s.startsWith(pattern)).sorted(Comparator.reverseOrder()).toList();
+            return dockerService.getImages()
+                    .stream().filter(s -> s.contains(pattern)).sorted(Comparator.reverseOrder()).toList();
         }
     }
 
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
index 0afe21ea..f003c099 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
@@ -350,17 +350,8 @@ public class DockerService extends DockerServiceUtils {
         }
     }
 
-    private DockerClientConfig getDockerClientConfig(String registryUrl, String registryUsername, String registryPassword) {
+    private DockerClientConfig getDockerClientConfig() {
         DefaultDockerClientConfig.Builder builder =  DefaultDockerClientConfig.createDefaultConfigBuilder();
-        if (registryUrl != null) {
-            builder.withRegistryUrl(registryUrl);
-        }
-        if (registryUsername != null) {
-            builder.withRegistryUsername(registryUsername);
-        }
-        if (registryPassword != null) {
-            builder.withRegistryPassword(registryPassword);
-        }
         return builder.build();
     }
 
@@ -374,19 +365,13 @@ public class DockerService extends DockerServiceUtils {
 
     public DockerClient getDockerClient() {
         if (dockerClient == null) {
-            DockerClientConfig config = getDockerClientConfig(null, null, null);
+            DockerClientConfig config = getDockerClientConfig();
             DockerHttpClient httpClient = getDockerHttpClient(config);
             dockerClient = DockerClientImpl.getInstance(config, httpClient);
         }
         return dockerClient;
     }
 
-    public DockerClient getDockerClient(String registryUrl, String registryUsername, String registryPassword) {
-        DockerClientConfig config = getDockerClientConfig(registryUrl, registryUsername, registryPassword);
-        DockerHttpClient httpClient = getDockerHttpClient(config);
-        return DockerClientImpl.getInstance(config, httpClient);
-    }
-
     public int getMaxPortMapped(int port) {
         return getDockerClient().listContainersCmd().withShowAll(true).exec().stream()
                 .map(c -> List.of(c.ports))
@@ -402,14 +387,6 @@ public class DockerService extends DockerServiceUtils {
                 .map(image -> image.getRepoTags()[0]).toList();
     }
 
-    public List<String> getImages(String registryUrl, String registryUsername, String registryPassword) throws IOException {
-        List<String> result = new ArrayList<>();
-        DockerClient client = getDockerClient(registryUrl, registryUsername, registryPassword);
-        client.listImagesCmd().withShowAll(true).exec().forEach(image -> result.add(image.getRepoTags()[0]));
-        client.close();
-        return result;
-    }
-
     public void deleteImage(String imageName) {
         Optional<Image> image = getDockerClient().listImagesCmd().withShowAll(true).exec().stream()
                 .filter(i -> Arrays.stream(i.getRepoTags()).anyMatch(s -> Objects.equals(s, imageName))).findFirst();
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/registry/RegistryService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/registry/RegistryService.java
index d979561d..a3d80e8c 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/registry/RegistryService.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/registry/RegistryService.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.karavan.registry;
 
-import io.fabric8.kubernetes.api.model.Secret;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 import org.apache.camel.karavan.kubernetes.KubernetesService;
@@ -57,8 +56,6 @@ public class RegistryService {
             imageGroup = i != null ? i : group;
             registryUsername = kubernetesService.getKaravanSecret("image-registry-username");
             registryPassword = kubernetesService.getKaravanSecret("image-registry-password");
-        } else if (!ConfigService.inDocker() && installRegistry) {
-            registryUrl = "localhost:5555";
         }
         return new RegistryConfig(registryUrl, imageGroup, registryUsername, registryPassword);
     }
@@ -68,10 +65,11 @@ public class RegistryService {
     }
 
     public String getRegistryWithGroupForSync() {
-        if (ConfigService.inKubernetes()) {
-            return getRegistryConfig().getRegistry() + "/" + group;
+        String registryUrl = registry;
+        if (!ConfigService.inDocker() && installRegistry) {
+            registryUrl = "localhost:5555";
         }
-        return registry + "/" + group;
+        return registryUrl + "/" + group;
     }
 
     public List<String> getEnvForBuild() {
diff --git a/karavan-web/karavan-app/src/main/webui/src/project/container/ProjectContainerTab.tsx b/karavan-web/karavan-app/src/main/webui/src/project/container/ProjectContainerTab.tsx
index 69f6e526..7e64b179 100644
--- a/karavan-web/karavan-app/src/main/webui/src/project/container/ProjectContainerTab.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/project/container/ProjectContainerTab.tsx
@@ -26,12 +26,14 @@ export function ProjectContainerTab() {
                                         <Badge className="badge">{env}</Badge>
                                     </DescriptionListDescription>
                                 </DescriptionListGroup>
-                                <DescriptionListGroup>
-                                    <DescriptionListTerm>Deployment</DescriptionListTerm>
-                                    <DescriptionListDescription>
-                                        <DeploymentPanel key={env} env={env}/>
-                                    </DescriptionListDescription>
-                                </DescriptionListGroup>
+                                {config.infrastructure === 'kubernetes' &&
+                                    <DescriptionListGroup>
+                                        <DescriptionListTerm>Deployment</DescriptionListTerm>
+                                        <DescriptionListDescription>
+                                            <DeploymentPanel key={env} env={env}/>
+                                        </DescriptionListDescription>
+                                    </DescriptionListGroup>
+                                }
                                 <DescriptionListGroup>
                                     <DescriptionListTerm>Containers</DescriptionListTerm>
                                     <DescriptionListDescription>


[camel-karavan] 01/02: Camel-main runtime only for #885

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit ec5b0ff842c7ef902cb91d2e9655c06a852a16cf
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Wed Sep 13 09:05:17 2023 -0400

    Camel-main runtime only for #885
---
 .../apache/camel/karavan/api/ProjectResource.java  |  5 --
 .../org/apache/camel/karavan/code/CodeService.java | 66 ++++------------------
 .../camel/karavan/docker/DockerForKaravan.java     | 15 ++++-
 .../camel/karavan/infinispan/model/Project.java    | 21 ++-----
 .../karavan/kubernetes/KubernetesService.java      |  5 +-
 .../camel/karavan/service/ConfigService.java       | 13 +----
 .../karavan/service/ContainerStatusService.java    |  2 +-
 .../camel/karavan/service/ProjectService.java      | 28 ++++-----
 .../apache/camel/karavan/shared/Configuration.java | 22 +-------
 .../org/apache/camel/karavan/shared/Constants.java |  1 -
 .../src/main/resources/application.properties      |  2 -
 ...on.properties => docker-application.properties} |  0
 ...in-builder-script-docker.sh => docker-build.sh} |  0
 .../{project-compose.yaml => docker-compose.yaml}  |  0
 ...roperties => kubernetes-application.properties} |  0
 ...er-script-kubernetes.sh => kubernetes-build.sh} |  0
 ...properties => openshift-application.properties} |  0
 ...lder-script-openshift.sh => openshift-build.sh} |  0
 ...a => org.apache.camel.AggregationStrategy.java} |  0
 ...cessor.java => org.apache.camel.Processor.java} |  0
 .../snippets/quarkus-builder-script-docker.sh      | 32 -----------
 .../snippets/quarkus-builder-script-kubernetes.sh  | 39 -------------
 .../snippets/quarkus-builder-script-openshift.sh   | 41 --------------
 .../snippets/quarkus-docker-application.properties | 10 ----
 .../quarkus-kubernetes-application.properties      | 15 -----
 .../quarkus-openshift-application.properties       | 17 ------
 ...arkus-org.apache.camel.AggregationStrategy.java | 23 --------
 .../quarkus-org.apache.camel.Processor.java        | 14 -----
 .../snippets/spring-boot-builder-script-docker.sh  | 32 -----------
 .../spring-boot-builder-script-kubernetes.sh       | 31 ----------
 .../spring-boot-builder-script-openshift.sh        | 29 ----------
 .../spring-boot-docker-application.properties      | 15 -----
 .../spring-boot-kubernetes-application.properties  | 20 -------
 .../spring-boot-openshift-application.properties   | 21 -------
 ...-boot-org.apache.camel.AggregationStrategy.java | 20 -------
 .../spring-boot-org.apache.camel.Processor.java    | 12 ----
 .../src/main/webui/src/api/ProjectModels.ts        | 12 ++--
 .../src/main/webui/src/api/ProjectService.ts       |  4 +-
 .../webui/src/knowledgebase/KnowledgebasePage.tsx  | 23 ++------
 .../main/webui/src/project/build/BuildPanel.tsx    | 23 ++++++--
 .../main/webui/src/project/build/ImagesPanel.tsx   |  2 +-
 .../src/main/webui/src/project/files/FilesTab.tsx  |  2 +-
 .../main/webui/src/projects/CreateProjectModal.tsx | 40 +------------
 .../src/main/webui/src/projects/ProjectsPage.tsx   |  1 -
 .../main/webui/src/projects/ProjectsTableRow.tsx   | 11 ----
 .../main/webui/src/services/CreateServiceModal.tsx | 19 +------
 .../webui/src/templates/CreateProjectModal.tsx     | 40 +------------
 .../main/webui/src/templates/TemplatesTableRow.tsx |  1 -
 48 files changed, 81 insertions(+), 648 deletions(-)

diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectResource.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectResource.java
index 4217e0f4..499a3c29 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectResource.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectResource.java
@@ -27,7 +27,6 @@ import jakarta.ws.rs.*;
 import jakarta.ws.rs.core.MediaType;
 import org.apache.camel.karavan.service.ProjectService;
 import org.apache.camel.karavan.service.ConfigService;
-import org.eclipse.microprofile.config.inject.ConfigProperty;
 
 import java.net.URLDecoder;
 import java.nio.charset.StandardCharsets;
@@ -39,9 +38,6 @@ import java.util.stream.Collectors;
 @Path("/api/project")
 public class ProjectResource {
 
-    @ConfigProperty(name = "karavan.environment")
-    String environment;
-
     @Inject
     InfinispanService infinispanService;
 
@@ -157,7 +153,6 @@ public class ProjectResource {
     public Project copy(@PathParam("sourceProject") String sourceProject, Project project) throws Exception {
 //        Save project
         Project s = infinispanService.getProject(sourceProject);
-        project.setRuntime(s.getRuntime());
         infinispanService.saveProject(project);
 //        Copy files
         Map<GroupedKey, ProjectFile> map = infinispanService.getProjectFilesMap(sourceProject).entrySet().stream()
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/code/CodeService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/code/CodeService.java
index 85a8a140..33e771e0 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/code/CodeService.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/code/CodeService.java
@@ -55,9 +55,9 @@ public class CodeService {
 
     private static final Logger LOGGER = Logger.getLogger(CodeService.class.getName());
     public static final String APPLICATION_PROPERTIES_FILENAME = "application.properties";
-    public static final String BUILDER_SCRIPT_FILE_SUFFIX = "builder-script-";
+    public static final String BUILD_SCRIPT_FILENAME = "build.sh";
     public static final String DEV_SERVICES_FILENAME = "devservices.yaml";
-    public static final String PROJECT_COMPOSE_FILENAME = "project-compose.yaml";
+    public static final String PROJECT_COMPOSE_FILENAME = "docker-compose.yaml";
     private static final String SNIPPETS_PATH = "/snippets/";
     private static final int INTERNAL_PORT = 8080;
 
@@ -76,12 +76,11 @@ public class CodeService {
     @Inject
     Vertx vertx;
 
-    List<String> runtimes = List.of("quarkus", "spring-boot", "camel-main");
     List<String> targets = List.of("openshift", "kubernetes", "docker");
     List<String> interfaces = List.of("org.apache.camel.AggregationStrategy.java", "org.apache.camel.Processor.java");
 
     public static final Map<String, String> DEFAULT_CONTAINER_RESOURCES = Map.of(
-            "requests.memory", "512Mi",
+            "requests.memory", "256Mi",
             "requests.cpu", "500m",
             "limits.memory", "2048Mi",
             "limits.cpu", "2000m"
@@ -92,7 +91,7 @@ public class CodeService {
         if (ConfigService.inKubernetes()) {
             target = kubernetesService.isOpenshift() ? "openshift" : "kubernetes";
         }
-        String templateName = project.getRuntime() + "-" + target + "-" + APPLICATION_PROPERTIES_FILENAME;
+        String templateName = target + "-" + APPLICATION_PROPERTIES_FILENAME;
         String templateText = getTemplateText(templateName);
         Template result = engine.parse(templateText);
         TemplateInstance instance = result
@@ -121,11 +120,11 @@ public class CodeService {
         }
     }
 
-    public String getBuilderScript(Project project) {
+    public String getBuilderScript() {
         String target = ConfigService.inKubernetes()
                 ? (kubernetesService.isOpenshift() ? "openshift" : "kubernetes")
                 : "docker";
-        String templateName = project.getRuntime() + "-builder-script-" + target + ".sh";
+        String templateName = target + "-" + BUILD_SCRIPT_FILENAME;
         return getTemplateText(templateName);
     }
 
@@ -145,15 +144,12 @@ public class CodeService {
 
         List<String> files = new ArrayList<>(interfaces);
         files.addAll(targets.stream().map(target -> target + "-" + APPLICATION_PROPERTIES_FILENAME).toList());
-        files.addAll(targets.stream().map(target -> BUILDER_SCRIPT_FILE_SUFFIX + target + ".sh").toList());
-
-        runtimes.forEach(runtime -> {
-            files.forEach(file -> {
-                String templateName = runtime + "-" + file;
-                String templatePath = SNIPPETS_PATH + templateName;
-                String templateText = getResourceFile(templatePath);
-                result.put(templateName, templateText);
-            });
+        files.addAll(targets.stream().map(target ->  target + "-" + BUILD_SCRIPT_FILENAME).toList());
+
+        files.forEach(file -> {
+            String templatePath = SNIPPETS_PATH + file;
+            String templateText = getResourceFile(templatePath);
+            result.put(file, templateText);
         });
 
         result.put(PROJECT_COMPOSE_FILENAME, getResourceFile(SNIPPETS_PATH + PROJECT_COMPOSE_FILENAME));
@@ -202,33 +198,6 @@ public class CodeService {
         return mapper.convertValue(map, JsonNode.class);
     }
 
-    public static Map<String, String> getRunnerContainerResourcesMap(ProjectFile propertiesFile, boolean isOpenshift, boolean isQuarkus) {
-        if (!isQuarkus) {
-            return DEFAULT_CONTAINER_RESOURCES;
-        } else {
-            Map<String, String> result = new HashMap<>();
-            String patternPrefix = isOpenshift ? "quarkus.openshift.resources." : "quarkus.kubernetes.resources.";
-            String devPatternPrefix = "%dev." + patternPrefix;
-
-            List<String> lines = propertiesFile.getCode().lines().collect(Collectors.toList());
-
-            DEFAULT_CONTAINER_RESOURCES.forEach((key, value) -> {
-                Optional<String> dev = lines.stream().filter(l -> l.startsWith(devPatternPrefix + key)).findFirst();
-                if (dev.isPresent()) {
-                    result.put(key, CodeService.getValueForProperty(dev.get(), devPatternPrefix + key));
-                } else {
-                    Optional<String> prod = lines.stream().filter(l -> l.startsWith(patternPrefix + key)).findFirst();
-                    if (prod.isPresent()){
-                        result.put(key, CodeService.getValueForProperty(prod.get(), patternPrefix + key));
-                    } else {
-                        result.put(key, value);
-                    }
-                }
-            });
-            return result;
-        }
-    }
-
     public String getPropertiesFile(GitRepo repo) {
         try {
             for (GitRepoFile e : repo.getFiles()){
@@ -242,13 +211,6 @@ public class CodeService {
         return null;
     }
 
-    public String capitalize(String str) {
-        if(str == null || str.isEmpty()) {
-            return str;
-        }
-        return str.substring(0, 1).toUpperCase() + str.substring(1);
-    }
-
     public static String getProperty(String file, String property) {
         String prefix = property + "=";
         return  Arrays.stream(file.split(System.lineSeparator())).filter(s -> s.startsWith(prefix))
@@ -271,10 +233,6 @@ public class CodeService {
         return name != null && !name.isBlank() ? name : getProperty(file, "camel.karavan.project-name");
     }
 
-    public String getProjectRuntime(String file) {
-        return getProperty(file, "camel.jbang.runtime");
-    }
-
     public ProjectFile createInitialProjectCompose(Project project) {
         int port = getNextAvailablePort();
         String templateText = getTemplateText(PROJECT_COMPOSE_FILENAME);
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
index d05fd4ab..4d5ad276 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
@@ -28,6 +28,7 @@ import org.jboss.logging.Logger;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 import static org.apache.camel.karavan.shared.Constants.*;
 
@@ -39,13 +40,17 @@ public class DockerForKaravan {
     @ConfigProperty(name = "karavan.devmode.image")
     String devmodeImage;
 
+    @ConfigProperty(name = "karavan.maven.cache")
+    Optional<String> mavenCache;
+
     @Inject
     DockerService dockerService;
 
     @Inject
     RegistryService registryService;
 
-    public void runProjectInDevMode(String projectId, String jBangOptions, Map<Integer, Integer> ports, Map<String, String> files, Map<String, String> volumes) throws Exception {
+    public void runProjectInDevMode(String projectId, String jBangOptions, Map<Integer, Integer> ports, Map<String, String> files) throws Exception {
+        Map<String, String> volumes = getMavenVolumes();
         Container c = createDevmodeContainer(projectId, jBangOptions, ports, volumes);
         dockerService.runContainer(projectId);
         dockerService.copyFiles(c.getId(), "/code", files);
@@ -68,8 +73,9 @@ public class DockerForKaravan {
 
     }
 
-    public void runBuildProject(Project project, String script, List<String> env, Map<String, String> volumes, String tag) throws Exception {
+    public void runBuildProject(Project project, String script, List<String> env, String tag) throws Exception {
         String containerName = project.getProjectId() + BUILDER_SUFFIX;
+        Map<String, String> volumes = getMavenVolumes();
         dockerService.deleteContainer(containerName);
         Container c = createBuildContainer(containerName, project, env, volumes, tag);
         dockerService.copyExecFile(c.getId(), "/karavan", "build.sh", script);
@@ -84,12 +90,15 @@ public class DockerForKaravan {
                 Map.of(
                         LABEL_TYPE, ContainerStatus.ContainerType.build.name(),
                         LABEL_PROJECT_ID, project.getProjectId(),
-                        LABEL_PROJECT_RUNTIME, project.getRuntime(),
                         LABEL_TAG, tag
                 ),
                 volumes, null,"/karavan/build.sh");
     }
 
+    private Map<String,String> getMavenVolumes(){
+        return mavenCache.map(s -> Map.of(s, "/root/.m2")).orElseGet(Map::of);
+    }
+
     public void syncImage(String projectId, String tag) throws InterruptedException {
         String image = registryService.getRegistryWithGroupForSync() + "/" + projectId + ":" + tag;
         dockerService.pullImage(image);
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/Project.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/Project.java
index 6d37868f..5f556376 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/Project.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/Project.java
@@ -24,30 +24,26 @@ public class Project {
     @ProtoField(number = 3)
     String description;
     @ProtoField(number = 4)
-    String runtime;
-    @ProtoField(number = 5)
     String lastCommit;
-    @ProtoField(number = 6)
+    @ProtoField(number = 5)
     Long lastCommitTimestamp;
-    @ProtoField(number = 7)
+    @ProtoField(number = 6)
     Type type;
 
     @ProtoFactory
-    public Project(String projectId, String name, String description, String runtime, String lastCommit, Long lastCommitTimestamp, Type type) {
+    public Project(String projectId, String name, String description, String lastCommit, Long lastCommitTimestamp, Type type) {
         this.projectId = projectId;
         this.name = name;
         this.description = description;
-        this.runtime = runtime;
         this.lastCommit = lastCommit;
         this.lastCommitTimestamp = lastCommitTimestamp;
         this.type = type;
     }
 
-    public Project(String projectId, String name, String description, String runtime, String lastCommit, Long lastCommitTimestamp) {
+    public Project(String projectId, String name, String description, String lastCommit, Long lastCommitTimestamp) {
         this.projectId = projectId;
         this.name = name;
         this.description = description;
-        this.runtime = runtime;
         this.lastCommit = lastCommit;
         this.lastCommitTimestamp = lastCommitTimestamp;
         this.type = Type.normal;
@@ -57,7 +53,6 @@ public class Project {
         this.projectId = projectId;
         this.name = name;
         this.description = description;
-        this.runtime = runtime;
         this.lastCommitTimestamp = Instant.now().toEpochMilli();
         this.type = Type.normal;
     }
@@ -90,14 +85,6 @@ public class Project {
         this.description = description;
     }
 
-    public String getRuntime() {
-        return runtime;
-    }
-
-    public void setRuntime(String runtime) {
-        this.runtime = runtime;
-    }
-
     public String getLastCommit() {
         return lastCommit;
     }
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
index d47e1853..a8acd954 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
@@ -166,7 +166,6 @@ public class KubernetesService implements HealthCheck {
         labels.putAll(getPartOfLabels());
         labels.put("app.kubernetes.io/name", name);
         labels.put(LABEL_PROJECT_ID, project.getProjectId());
-        labels.put(LABEL_PROJECT_RUNTIME, project.getRuntime());
         if (type != null) {
             labels.put(LABEL_TYPE, type.name());
         }
@@ -353,9 +352,7 @@ public class KubernetesService implements HealthCheck {
             createPVC(name, labels);
             Pod old = client.pods().inNamespace(getNamespace()).withName(name).get();
             if (old == null) {
-                ProjectFile properties = infinispanService.getProjectFile(project.getProjectId(), APPLICATION_PROPERTIES_FILENAME);
-                Map<String, String> containerResources = CodeService
-                        .getRunnerContainerResourcesMap(properties, isOpenshift(), project.getRuntime().equals("quarkus"));
+                Map<String, String> containerResources = CodeService.DEFAULT_CONTAINER_RESOURCES;
                 Pod pod = getDevModePod(name, jBangOptions, containerResources, labels);
                 Pod result = client.resource(pod).createOrReplace();
                 LOGGER.info("Created pod " + result.getMetadata().getName());
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ConfigService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ConfigService.java
index cbb4ed56..7ae4ae4c 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ConfigService.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ConfigService.java
@@ -17,10 +17,6 @@
 package org.apache.camel.karavan.service;
 
 import io.quarkus.runtime.StartupEvent;
-import io.quarkus.runtime.configuration.ConfigUtils;
-import io.quarkus.runtime.configuration.ProfileManager;
-import io.vertx.core.Vertx;
-import jakarta.inject.Inject;
 import org.apache.camel.karavan.shared.Configuration;
 import org.eclipse.microprofile.config.inject.ConfigProperty;
 
@@ -44,11 +40,6 @@ public class ConfigService {
     @ConfigProperty(name = "karavan.environments")
     List<String> environments;
 
-    @ConfigProperty(name = "karavan.default-runtime")
-    String runtime;
-
-    @ConfigProperty(name = "karavan.runtimes")
-    List<String> runtimes;
 
     private Configuration configuration;
     private static Boolean inKubernetes;
@@ -59,9 +50,7 @@ public class ConfigService {
                 version,
                  inKubernetes() ? "kubernetes" : "docker",
                  environment,
-                 environments,
-                 runtime,
-                 runtimes
+                 environments
         );
     }
 
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ContainerStatusService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ContainerStatusService.java
index 281213de..1068126a 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ContainerStatusService.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ContainerStatusService.java
@@ -91,7 +91,7 @@ public class ContainerStatusService {
             } else if (Objects.equals(oldStatus.getInTransit(), Boolean.FALSE)) {
                 saveContainerStatus(newStatus, oldStatus);
             } else if (Objects.equals(oldStatus.getInTransit(), Boolean.TRUE)) {
-                if (!Objects.equals(oldStatus.getState(), newStatus.getState()) || newStatus.getCpuInfo().isEmpty()) {
+                if (!Objects.equals(oldStatus.getState(), newStatus.getState()) || newStatus.getCpuInfo() == null || newStatus.getCpuInfo().isEmpty()) {
                     saveContainerStatus(newStatus, oldStatus);
                 }
             }
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
index b73a4fa9..cb71a937 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
@@ -58,8 +58,7 @@ public class ProjectService implements HealthCheck {
     @ConfigProperty(name = "karavan.environment")
     String environment;
 
-    @ConfigProperty(name = "karavan.maven.cache")
-    Optional<String> mavenCache;
+
 
     @Inject
     InfinispanService infinispanService;
@@ -113,10 +112,7 @@ public class ProjectService implements HealthCheck {
 
                 ProjectFile compose = infinispanService.getProjectFile(project.getProjectId(), PROJECT_COMPOSE_FILENAME);
                 DockerComposeService dcs = DockerComposeConverter.fromCode(compose.getCode(), project.getProjectId());
-                Map<String, String> volumes = mavenCache
-                        .map(s -> Map.of(s, "/root/.m2"))
-                        .orElseGet(Map::of);
-                dockerForKaravan.runProjectInDevMode(project.getProjectId(), jBangOptions, dcs.getPortsMap(), files, volumes);
+                dockerForKaravan.runProjectInDevMode(project.getProjectId(), jBangOptions, dcs.getPortsMap(), files);
             }
             return containerName;
         } else {
@@ -128,13 +124,12 @@ public class ProjectService implements HealthCheck {
         tag = tag != null && !tag.isEmpty() && !tag.isBlank()
                 ? tag
                 : Instant.now().toString().substring(0, 19).replace(":", "-");
-        String script = codeService.getBuilderScript(project);
+        String script = codeService.getBuilderScript();
         List<String> env = getEnvForBuild(project, tag);
         if (ConfigService.inKubernetes()) {
             kubernetesService.runBuildProject(project, script, env, tag);
         } else {
-            Map<String, String> volumes = mavenCache.map(s -> Map.of(s, "/root/.m2")).orElseGet(Map::of);
-            dockerForKaravan.runBuildProject(project, script, env, volumes, tag);
+            dockerForKaravan.runBuildProject(project, script, env, tag);
         }
     }
 
@@ -216,11 +211,11 @@ public class ProjectService implements HealthCheck {
                 Project project;
                 String folderName = repo.getName();
                 if (folderName.equals(Project.Type.templates.name())) {
-                    project = new Project(Project.Type.templates.name(), "Templates", "Templates", "", repo.getCommitId(), repo.getLastCommitTimestamp(), Project.Type.templates);
+                    project = new Project(Project.Type.templates.name(), "Templates", "Templates", repo.getCommitId(), repo.getLastCommitTimestamp(), Project.Type.templates);
                 } else if (folderName.equals(Project.Type.kamelets.name())) {
-                    project = new Project(Project.Type.kamelets.name(), "Custom Kamelets", "Custom Kamelets", "", repo.getCommitId(), repo.getLastCommitTimestamp(), Project.Type.kamelets);
+                    project = new Project(Project.Type.kamelets.name(), "Custom Kamelets", "Custom Kamelets", repo.getCommitId(), repo.getLastCommitTimestamp(), Project.Type.kamelets);
                 } else if (folderName.equals(Project.Type.services.name())) {
-                    project = new Project(Project.Type.services.name(), "Services", "Development Services", "", repo.getCommitId(), repo.getLastCommitTimestamp(), Project.Type.services);
+                    project = new Project(Project.Type.services.name(), "Services", "Development Services", repo.getCommitId(), repo.getLastCommitTimestamp(), Project.Type.services);
                 } else {
                     project = getProjectFromRepo(repo);
                 }
@@ -268,8 +263,7 @@ public class ProjectService implements HealthCheck {
         String propertiesFile = codeService.getPropertiesFile(repo);
         String projectName = codeService.getProjectName(propertiesFile);
         String projectDescription = codeService.getProjectDescription(propertiesFile);
-        String runtime = codeService.getProjectRuntime(propertiesFile);
-        return new Project(folderName, projectName, projectDescription, runtime, repo.getCommitId(), repo.getLastCommitTimestamp());
+        return new Project(folderName, projectName, projectDescription, repo.getCommitId(), repo.getLastCommitTimestamp());
     }
 
     public Project commitAndPushProject(String projectId, String message) throws Exception {
@@ -289,7 +283,7 @@ public class ProjectService implements HealthCheck {
         try {
             Project kamelets = infinispanService.getProject(Project.Type.kamelets.name());
             if (kamelets == null) {
-                kamelets = new Project(Project.Type.kamelets.name(), "Custom Kamelets", "Custom Kamelets", "", "", Instant.now().toEpochMilli(), Project.Type.kamelets);
+                kamelets = new Project(Project.Type.kamelets.name(), "Custom Kamelets", "Custom Kamelets", "", Instant.now().toEpochMilli(), Project.Type.kamelets);
                 infinispanService.saveProject(kamelets);
                 commitAndPushProject(Project.Type.kamelets.name(), "Add custom kamelets");
             }
@@ -303,7 +297,7 @@ public class ProjectService implements HealthCheck {
         try {
             Project templates = infinispanService.getProject(Project.Type.templates.name());
             if (templates == null) {
-                templates = new Project(Project.Type.templates.name(), "Templates", "Templates", "", "", Instant.now().toEpochMilli(), Project.Type.templates);
+                templates = new Project(Project.Type.templates.name(), "Templates", "Templates", "", Instant.now().toEpochMilli(), Project.Type.templates);
                 infinispanService.saveProject(templates);
 
                 codeService.getTemplates().forEach((name, value) -> {
@@ -322,7 +316,7 @@ public class ProjectService implements HealthCheck {
         try {
             Project services = infinispanService.getProject(Project.Type.services.name());
             if (services == null) {
-                services = new Project(Project.Type.services.name(), "Services", "Development Services", "", "", Instant.now().toEpochMilli(), Project.Type.services);
+                services = new Project(Project.Type.services.name(), "Services", "Development Services", "", Instant.now().toEpochMilli(), Project.Type.services);
                 infinispanService.saveProject(services);
 
                 codeService.getServices().forEach((name, value) -> {
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/Configuration.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/Configuration.java
index cec29fda..73de9904 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/Configuration.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/Configuration.java
@@ -23,20 +23,16 @@ public class Configuration {
     private String infrastructure;
     private String environment;
     private List<String> environments;
-    private String runtime;
-    private List<String> runtimes;
     private List<Object> status;
 
     public Configuration() {
     }
 
-    public Configuration(String version, String infrastructure, String environment, List<String> environments, String runtime, List<String> runtimes) {
+    public Configuration(String version, String infrastructure, String environment, List<String> environments) {
         this.version = version;
         this.infrastructure = infrastructure;
         this.environment = environment;
         this.environments = environments;
-        this.runtime = runtime;
-        this.runtimes = runtimes;
     }
 
     public String getVersion() {
@@ -71,22 +67,6 @@ public class Configuration {
         this.environments = environments;
     }
 
-    public String getRuntime() {
-        return runtime;
-    }
-
-    public void setRuntime(String runtime) {
-        this.runtime = runtime;
-    }
-
-    public List<String> getRuntimes() {
-        return runtimes;
-    }
-
-    public void setRuntimes(List<String> runtimes) {
-        this.runtimes = runtimes;
-    }
-
     public List<Object> getStatus() {
         return status;
     }
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/Constants.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/Constants.java
index a63843a6..d06e9848 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/Constants.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/shared/Constants.java
@@ -23,7 +23,6 @@ public class Constants {
     public static final String LABEL_PART_OF = "app.kubernetes.io/part-of";
     public static final String LABEL_TYPE = "org.apache.camel.karavan/type";
     public static final String LABEL_PROJECT_ID = "org.apache.camel.karavan/projectId";
-    public static final String LABEL_PROJECT_RUNTIME = "org.apache.camel.karavan/projectRuntime";
     public static final String LABEL_TAG = "org.apache.camel.karavan/tag";
 
     public static final String BUILDER_SUFFIX = "-builder";
diff --git a/karavan-web/karavan-app/src/main/resources/application.properties b/karavan-web/karavan-app/src/main/resources/application.properties
index 7ec18b80..0316b000 100644
--- a/karavan-web/karavan-app/src/main/resources/application.properties
+++ b/karavan-web/karavan-app/src/main/resources/application.properties
@@ -1,8 +1,6 @@
 karavan.version=4.0.0-RC2
 karavan.environment=dev
 karavan.environments=dev
-karavan.default-runtime=camel-main
-karavan.runtimes=camel-main,quarkus,spring-boot
 
 karavan.camel.status.interval=2s
 karavan.container.status.interval=2s
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/camel-main-docker-application.properties b/karavan-web/karavan-app/src/main/resources/snippets/docker-application.properties
similarity index 100%
rename from karavan-web/karavan-app/src/main/resources/snippets/camel-main-docker-application.properties
rename to karavan-web/karavan-app/src/main/resources/snippets/docker-application.properties
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/camel-main-builder-script-docker.sh b/karavan-web/karavan-app/src/main/resources/snippets/docker-build.sh
similarity index 100%
rename from karavan-web/karavan-app/src/main/resources/snippets/camel-main-builder-script-docker.sh
rename to karavan-web/karavan-app/src/main/resources/snippets/docker-build.sh
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/project-compose.yaml b/karavan-web/karavan-app/src/main/resources/snippets/docker-compose.yaml
similarity index 100%
rename from karavan-web/karavan-app/src/main/resources/snippets/project-compose.yaml
rename to karavan-web/karavan-app/src/main/resources/snippets/docker-compose.yaml
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/camel-main-kubernetes-application.properties b/karavan-web/karavan-app/src/main/resources/snippets/kubernetes-application.properties
similarity index 100%
rename from karavan-web/karavan-app/src/main/resources/snippets/camel-main-kubernetes-application.properties
rename to karavan-web/karavan-app/src/main/resources/snippets/kubernetes-application.properties
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/camel-main-builder-script-kubernetes.sh b/karavan-web/karavan-app/src/main/resources/snippets/kubernetes-build.sh
similarity index 100%
rename from karavan-web/karavan-app/src/main/resources/snippets/camel-main-builder-script-kubernetes.sh
rename to karavan-web/karavan-app/src/main/resources/snippets/kubernetes-build.sh
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/camel-main-openshift-application.properties b/karavan-web/karavan-app/src/main/resources/snippets/openshift-application.properties
similarity index 100%
rename from karavan-web/karavan-app/src/main/resources/snippets/camel-main-openshift-application.properties
rename to karavan-web/karavan-app/src/main/resources/snippets/openshift-application.properties
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/camel-main-builder-script-openshift.sh b/karavan-web/karavan-app/src/main/resources/snippets/openshift-build.sh
similarity index 100%
rename from karavan-web/karavan-app/src/main/resources/snippets/camel-main-builder-script-openshift.sh
rename to karavan-web/karavan-app/src/main/resources/snippets/openshift-build.sh
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/camel-main-org.apache.camel.AggregationStrategy.java b/karavan-web/karavan-app/src/main/resources/snippets/org.apache.camel.AggregationStrategy.java
similarity index 100%
rename from karavan-web/karavan-app/src/main/resources/snippets/camel-main-org.apache.camel.AggregationStrategy.java
rename to karavan-web/karavan-app/src/main/resources/snippets/org.apache.camel.AggregationStrategy.java
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/camel-main-org.apache.camel.Processor.java b/karavan-web/karavan-app/src/main/resources/snippets/org.apache.camel.Processor.java
similarity index 100%
rename from karavan-web/karavan-app/src/main/resources/snippets/camel-main-org.apache.camel.Processor.java
rename to karavan-web/karavan-app/src/main/resources/snippets/org.apache.camel.Processor.java
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-builder-script-docker.sh b/karavan-web/karavan-app/src/main/resources/snippets/quarkus-builder-script-docker.sh
deleted file mode 100644
index 037632f8..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-builder-script-docker.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env bash
-CHECKOUT_DIR="/scripts"
-KAMELETS_DIR="/scripts/kamelets"
-
-if  [[ ${GIT_REPOSITORY} == https* ]] ;
-then
-    replacer=https://${GIT_USERNAME}:${GIT_PASSWORD}@
-    prefix=https://
-    url="${GIT_REPOSITORY/$prefix/$replacer}"
-    git clone --depth 1 --branch ${GIT_BRANCH} $url ${CHECKOUT_DIR}
-elif [[ ${GIT_REPOSITORY} == http* ]] ;
-then
-  replacer=http://${GIT_USERNAME}:${GIT_PASSWORD}@
-      prefix=http://
-      url="${GIT_REPOSITORY/$prefix/$replacer}"
-      git clone --depth 1 --branch ${GIT_BRANCH} $url ${CHECKOUT_DIR}
-else
-    git clone --depth 1 --branch ${GIT_BRANCH} ${GIT_REPOSITORY} ${CHECKOUT_DIR}
-fi
-
-cd ${CHECKOUT_DIR}/${PROJECT_ID}
-
-jbang -Dcamel.jbang.version=${CAMEL_VERSION} camel@apache/camel export --local-kamelet-dir=${KAMELETS_DIR}
-
-export LAST_COMMIT=$(git rev-parse --short HEAD)
-export DATE=${TAG}
-
-mvn package jib:build \
-  -Djib.allowInsecureRegistries=true \
-  -Djib.to.image=${IMAGE_REGISTRY}/${IMAGE_GROUP}/${PROJECT_ID}:${DATE} \
-  -Djib.to.auth.username=${IMAGE_REGISTRY_USERNAME} \
-  -Djib.to.auth.password=${IMAGE_REGISTRY_PASSWORD}
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-builder-script-kubernetes.sh b/karavan-web/karavan-app/src/main/resources/snippets/quarkus-builder-script-kubernetes.sh
deleted file mode 100644
index b62a8981..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-builder-script-kubernetes.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env bash
-CHECKOUT_DIR="/scripts"
-KAMELETS_DIR="/scripts/kamelets"
-
-if  [[ $GIT_REPOSITORY == https* ]] ;
-then
-    replacer=https://$GIT_USERNAME:$GIT_PASSWORD@
-    prefix=https://
-    url="${GIT_REPOSITORY/$prefix/$replacer}"
-    git clone --depth 1 --branch ${GIT_BRANCH} $url ${CHECKOUT_DIR}
-else
-    git clone --depth 1 --branch ${GIT_BRANCH} ${GIT_REPOSITORY} ${CHECKOUT_DIR}
-fi
-
-cd ${CHECKOUT_DIR}/$(inputs.params.project)
-
-jbang -Dcamel.jbang.version=$CAMEL_VERSION camel@apache/camel export --local-kamelet-dir=${KAMELETS_DIR}
-
-export LAST_COMMIT=$(git rev-parse --short HEAD)
-export DATE=$(date '+%Y%m%d%H%M%S')
-export TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
-export NAMESPACE=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)
-
-mvn package \
-  -Dquarkus.container-image.build=true \
-  -Dquarkus.container-image.push=true \
-  -Dquarkus.container-image.insecure=true \
-  -Dquarkus.container-image.username=${IMAGE_REGISTRY_USERNAME} \
-  -Dquarkus.container-image.password=${IMAGE_REGISTRY_PASSWORD} \
-  -Dquarkus.container-image.registry=${IMAGE_REGISTRY} \
-  -Dquarkus.container-image.builder=jib \
-  -Dquarkus.kubernetes.deploy=true \
-  -Dquarkus.kubernetes.deployment-target=kubernetes \
-  -Dquarkus.kubernetes.add-version-to-label-selectors=false \
-  -Dquarkus.kubernetes.labels.\"app\"=$(inputs.params.project) \
-  -Dquarkus.kubernetes.labels.\"app.kubernetes.io/runtime\"=camel \
-  -Dquarkus.container-image.group=${IMAGE_GROUP} \
-  -Dquarkus.container-image.tag=${DATE} \
-  --settings=$MAVEN_SETTINGS
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-builder-script-openshift.sh b/karavan-web/karavan-app/src/main/resources/snippets/quarkus-builder-script-openshift.sh
deleted file mode 100644
index 17669aae..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-builder-script-openshift.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env bash
-CHECKOUT_DIR="/scripts"
-KAMELETS_DIR="/scripts/kamelets"
-
-if  [[ $GIT_REPOSITORY == https* ]] ;
-then
-    replacer=https://$GIT_USERNAME:$GIT_PASSWORD@
-    prefix=https://
-    url="${GIT_REPOSITORY/$prefix/$replacer}"
-    git clone --depth 1 --branch ${GIT_BRANCH} $url ${CHECKOUT_DIR}
-else
-    git clone --depth 1 --branch ${GIT_BRANCH} ${GIT_REPOSITORY} ${CHECKOUT_DIR}
-fi
-
-cd ${CHECKOUT_DIR}/$(inputs.params.project)
-
-jbang -Dcamel.jbang.version=$CAMEL_VERSION camel@apache/camel export --local-kamelet-dir=${KAMELETS_DIR}
-
-export LAST_COMMIT=$(git rev-parse --short HEAD)
-export DATE=$(date '+%Y%m%d%H%M%S')
-export TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
-export NAMESPACE=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)
-
-mvn package \
-  -Dquarkus.container-image.build=true \
-  -Dquarkus.container-image.push=true \
-  -Dquarkus.container-image.insecure=true \
-  -Dquarkus.container-image.username=sa \
-  -Dquarkus.container-image.password=${TOKEN} \
-  -Dquarkus.container-image.registry=${IMAGE_REGISTRY} \
-  -Dquarkus.container-image.builder=jib \
-  -Dquarkus.kubernetes-client.master-url=kubernetes.default.svc \
-  -Dquarkus.kubernetes-client.token=${TOKEN} \
-  -Dquarkus.kubernetes.deploy=true \
-  -Dquarkus.openshift.deployment-kind=Deployment \
-  -Dquarkus.openshift.add-version-to-label-selectors=false \
-  -Dquarkus.openshift.labels.\"app\"=$(inputs.params.project) \
-  -Dquarkus.openshift.labels.\"app.openshift.io/runtime\"=camel \
-  -Dquarkus.container-image.group=${NAMESPACE} \
-  -Dquarkus.container-image.tag=${DATE} \
-  --settings=$MAVEN_SETTINGS
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-docker-application.properties b/karavan-web/karavan-app/src/main/resources/snippets/quarkus-docker-application.properties
deleted file mode 100644
index 49c94759..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-docker-application.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-camel.karavan.project-id={projectId}
-camel.karavan.project-name={projectName}
-camel.karavan.project-description={projectDescription}
-camel.jbang.gav=org.camel.karavan.demo:{projectId}:1
-camel.jbang.runtime=quarkus
-camel.jbang.quarkusVersion=3.2.3.Final
-camel.jbang.dependencies=camel:microprofile-health,mvn:io.quarkus:quarkus-container-image-jib
-camel.health.enabled=true
-camel.health.exposure-level=full
-quarkus.container-image.name={projectId}
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-kubernetes-application.properties b/karavan-web/karavan-app/src/main/resources/snippets/quarkus-kubernetes-application.properties
deleted file mode 100644
index 62f10dc2..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-kubernetes-application.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-camel.karavan.project-id={projectId}
-camel.karavan.project-name={projectName}
-camel.karavan.project-description={projectDescription}
-camel.jbang.gav=org.camel.karavan.demo:{projectId}:1
-camel.jbang.runtime=quarkus
-camel.jbang.quarkusVersion=3.2.3.Final
-camel.jbang.dependencies=camel:microprofile-health,mvn:io.quarkus:quarkus-kubernetes,mvn:io.quarkus:quarkus-container-image-jib
-camel.health.enabled=true
-camel.health.exposure-level=full
-quarkus.container-image.name={projectId}
-quarkus.kubernetes.replicas=1
-quarkus.kubernetes.resources.requests.memory=64Mi
-quarkus.kubernetes.resources.requests.cpu=250m
-quarkus.kubernetes.resources.limits.memory=512Mi
-quarkus.kubernetes.resources.limits.cpu=1000m
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-openshift-application.properties b/karavan-web/karavan-app/src/main/resources/snippets/quarkus-openshift-application.properties
deleted file mode 100644
index da52999c..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-openshift-application.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-camel.karavan.project-id={projectId}
-camel.karavan.project-name={projectName}
-camel.karavan.project-description={projectDescription}
-camel.jbang.gav=org.camel.karavan.demo:{projectId}:1
-camel.jbang.runtime=quarkus
-camel.jbang.quarkusVersion=3.2.3.Final
-camel.jbang.dependencies=camel:microprofile-health,mvn:io.quarkus:quarkus-openshift,mvn:io.quarkus:quarkus-container-image-jib
-camel.health.enabled=true
-camel.health.exposure-level=full
-quarkus.container-image.name={projectId}
-quarkus.openshift.route.expose=true
-quarkus.openshift.part-of={projectId}
-quarkus.openshift.replicas=1
-quarkus.openshift.resources.requests.memory=64Mi
-quarkus.openshift.resources.requests.cpu=250m
-quarkus.openshift.resources.limits.memory=512Mi
-quarkus.openshift.resources.limits.cpu=1000m
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-org.apache.camel.AggregationStrategy.java b/karavan-web/karavan-app/src/main/resources/snippets/quarkus-org.apache.camel.AggregationStrategy.java
deleted file mode 100644
index 65b68158..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-org.apache.camel.AggregationStrategy.java
+++ /dev/null
@@ -1,23 +0,0 @@
-import org.apache.camel.AggregationStrategy
-;
-import org.apache.camel.Exchange;
-
-import jakarta.inject.Named;
-import jakarta.inject.Singleton;
-
-@Singleton
-@Named("NAME")
-public class NAME implements AggregationStrategy {
-    @Override
-    public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
-
-        if (oldExchange == null) {
-            return newExchange;
-        }
-
-        String oldBody = oldExchange.getIn().getBody(String.class);
-        String newBody = newExchange.getIn().getBody(String.class);
-        oldExchange.getIn().setBody(oldBody + "+" + newBody);
-        return oldExchange;
-    }
-}
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-org.apache.camel.Processor.java b/karavan-web/karavan-app/src/main/resources/snippets/quarkus-org.apache.camel.Processor.java
deleted file mode 100644
index 3efb7c4f..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/quarkus-org.apache.camel.Processor.java
+++ /dev/null
@@ -1,14 +0,0 @@
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-
-import jakarta.inject.Named;
-import jakarta.inject.Singleton;
-
-@Singleton
-@Named("NAME")
-public class NAME implements Processor {
-
-  public void process(Exchange exchange) throws Exception {
-      exchange.getIn().setBody("Hello World");
-  }
-}
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-builder-script-docker.sh b/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-builder-script-docker.sh
deleted file mode 100644
index 037632f8..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-builder-script-docker.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env bash
-CHECKOUT_DIR="/scripts"
-KAMELETS_DIR="/scripts/kamelets"
-
-if  [[ ${GIT_REPOSITORY} == https* ]] ;
-then
-    replacer=https://${GIT_USERNAME}:${GIT_PASSWORD}@
-    prefix=https://
-    url="${GIT_REPOSITORY/$prefix/$replacer}"
-    git clone --depth 1 --branch ${GIT_BRANCH} $url ${CHECKOUT_DIR}
-elif [[ ${GIT_REPOSITORY} == http* ]] ;
-then
-  replacer=http://${GIT_USERNAME}:${GIT_PASSWORD}@
-      prefix=http://
-      url="${GIT_REPOSITORY/$prefix/$replacer}"
-      git clone --depth 1 --branch ${GIT_BRANCH} $url ${CHECKOUT_DIR}
-else
-    git clone --depth 1 --branch ${GIT_BRANCH} ${GIT_REPOSITORY} ${CHECKOUT_DIR}
-fi
-
-cd ${CHECKOUT_DIR}/${PROJECT_ID}
-
-jbang -Dcamel.jbang.version=${CAMEL_VERSION} camel@apache/camel export --local-kamelet-dir=${KAMELETS_DIR}
-
-export LAST_COMMIT=$(git rev-parse --short HEAD)
-export DATE=${TAG}
-
-mvn package jib:build \
-  -Djib.allowInsecureRegistries=true \
-  -Djib.to.image=${IMAGE_REGISTRY}/${IMAGE_GROUP}/${PROJECT_ID}:${DATE} \
-  -Djib.to.auth.username=${IMAGE_REGISTRY_USERNAME} \
-  -Djib.to.auth.password=${IMAGE_REGISTRY_PASSWORD}
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-builder-script-kubernetes.sh b/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-builder-script-kubernetes.sh
deleted file mode 100644
index 51f4ccc4..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-builder-script-kubernetes.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env bash
-CHECKOUT_DIR="/scripts"
-KAMELETS_DIR="/scripts/kamelets"
-
-if  [[ $GIT_REPOSITORY == https* ]] ;
-then
-    replacer=https://$GIT_USERNAME:$GIT_PASSWORD@
-    prefix=https://
-    url="${GIT_REPOSITORY/$prefix/$replacer}"
-    git clone --depth 1 --branch ${GIT_BRANCH} $url ${CHECKOUT_DIR}
-else
-    git clone --depth 1 --branch ${GIT_BRANCH} ${GIT_REPOSITORY} ${CHECKOUT_DIR}
-fi
-
-cd ${CHECKOUT_DIR}/$(inputs.params.project)
-
-jbang -Dcamel.jbang.version=$CAMEL_VERSION camel@apache/camel export --local-kamelet-dir=${KAMELETS_DIR}
-
-export LAST_COMMIT=$(git rev-parse --short HEAD)
-export DATE=$(date '+%Y%m%d%H%M%S')
-export TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
-export NAMESPACE=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)
-
-mvn package k8s:build k8s:push k8s:resource k8s:apply \
-  -Pkubernetes \
-  -Djkube.namespace=${NAMESPACE} \
-  -Djkube.docker.push.registry=${IMAGE_REGISTRY} \
-  -Djkube.docker.username=${IMAGE_REGISTRY_USERNAME} \
-  -Djkube.docker.password=${IMAGE_REGISTRY_PASSWORD} \
-  -Djkube.generator.name=${IMAGE_REGISTRY}/${IMAGE_GROUP}/$(inputs.params.project):${DATE} \
-  --settings=$MAVEN_SETTINGS
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-builder-script-openshift.sh b/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-builder-script-openshift.sh
deleted file mode 100644
index 236abc22..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-builder-script-openshift.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env bash
-CHECKOUT_DIR="/scripts"
-KAMELETS_DIR="/scripts/kamelets"
-
-if  [[ $GIT_REPOSITORY == https* ]] ;
-then
-    replacer=https://$GIT_USERNAME:$GIT_PASSWORD@
-    prefix=https://
-    url="${GIT_REPOSITORY/$prefix/$replacer}"
-    git clone --depth 1 --branch ${GIT_BRANCH} $url ${CHECKOUT_DIR}
-else
-    git clone --depth 1 --branch ${GIT_BRANCH} ${GIT_REPOSITORY} ${CHECKOUT_DIR}
-fi
-
-cd ${CHECKOUT_DIR}/$(inputs.params.project)
-
-jbang -Dcamel.jbang.version=$CAMEL_VERSION camel@apache/camel export --local-kamelet-dir=${KAMELETS_DIR}
-
-export LAST_COMMIT=$(git rev-parse --short HEAD)
-export DATE=$(date '+%Y%m%d%H%M%S')
-export TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
-export NAMESPACE=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)
-
-mvn package package oc:build oc:push oc:resource oc:apply \
-  -Popenshift \
-  -Djkube.namespace=${NAMESPACE} \
-  -Djkube.docker.push.registry=${IMAGE_REGISTRY} \
-  -Djkube.generator.name=${IMAGE_REGISTRY}/${NAMESPACE}/$(inputs.params.project):${DATE} \
-  --settings=$MAVEN_SETTINGS
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-docker-application.properties b/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-docker-application.properties
deleted file mode 100644
index 5003d8fc..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-docker-application.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-camel.karavan.project-id={projectId}
-camel.karavan.project-name={projectName}
-camel.karavan.project-description={projectDescription}
-camel.jbang.gav=org.camel.karavan.demo:{projectId}:1
-camel.jbang.runtime=spring-boot
-camel.jbang.camelSpringBootVersion=4.0.0-RC2
-camel.jbang.springBootVersion=3.1.2
-camel.jbang.dependencies=camel:microprofile-health
-camel.health.enabled=true
-camel.health.exposure-level=full
-management.endpoints.web.exposure.include=health
-management.health.probes.enabled=true
-management.health.livenessState.enabled=true
-management.health.readinessState.enabled=true
-management.endpoint.health.show-details=always
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-kubernetes-application.properties b/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-kubernetes-application.properties
deleted file mode 100644
index 21839b9d..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-kubernetes-application.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-camel.karavan.project-id={projectId}
-camel.karavan.project-name={projectName}
-camel.karavan.project-description={projectDescription}
-camel.jbang.gav=org.camel.karavan.demo:{projectId}:1
-camel.jbang.runtime=spring-boot
-camel.jbang.camelSpringBootVersion=4.0.0-RC2
-camel.jbang.springBootVersion=3.1.2
-camel.jbang.dependencies=camel:microprofile-health
-camel.health.enabled=true
-camel.health.exposure-level=full
-management.endpoints.web.exposure.include=health
-management.health.probes.enabled=true
-management.health.livenessState.enabled=true
-management.health.readinessState.enabled=true
-management.endpoint.health.show-details=always
-jkube.version=1.14.0
-jkube.build.strategy=jib
-jkube.imagePullPolicy=IfNotPresent
-jkube.enricher.jkube-controller.replicaCount=1
-jkube.enricher.jkube-service.port=80
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-openshift-application.properties b/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-openshift-application.properties
deleted file mode 100644
index ebd7e368..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-openshift-application.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-camel.karavan.project-id={projectId}
-camel.karavan.project-name={projectName}
-camel.karavan.project-description={projectDescription}
-camel.jbang.gav=org.camel.karavan.demo:{projectId}:1
-camel.jbang.runtime=spring-boot
-camel.jbang.camelSpringBootVersion=4.0.0-RC2
-camel.jbang.springBootVersion=3.1.2
-camel.jbang.dependencies=camel:microprofile-health
-camel.health.enabled=true
-camel.health.exposure-level=full
-management.endpoints.web.exposure.include=health
-management.health.probes.enabled=true
-management.health.livenessState.enabled=true
-management.health.readinessState.enabled=true
-management.endpoint.health.show-details=always
-jkube.version=1.14.0
-jkube.build.strategy=jib
-jkube.imagePullPolicy=IfNotPresent
-jkube.enricher.jkube-controller.type=Deployment
-jkube.enricher.jkube-controller.replicaCount=1
-jkube.enricher.jkube-service.port=80
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-org.apache.camel.AggregationStrategy.java b/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-org.apache.camel.AggregationStrategy.java
deleted file mode 100644
index 1b04d76a..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-org.apache.camel.AggregationStrategy.java
+++ /dev/null
@@ -1,20 +0,0 @@
-import org.apache.camel.AggregationStrategy;
-import org.apache.camel.Exchange;
-
-import org.springframework.stereotype.Component;
-
-@Component("NAME")
-public class NAME implements AggregationStrategy {
-    @Override
-    public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
-
-        if (oldExchange == null) {
-            return newExchange;
-        }
-
-        String oldBody = oldExchange.getIn().getBody(String.class);
-        String newBody = newExchange.getIn().getBody(String.class);
-        oldExchange.getIn().setBody(oldBody + "+" + newBody);
-        return oldExchange;
-    }
-}
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-org.apache.camel.Processor.java b/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-org.apache.camel.Processor.java
deleted file mode 100644
index 4593b747..00000000
--- a/karavan-web/karavan-app/src/main/resources/snippets/spring-boot-org.apache.camel.Processor.java
+++ /dev/null
@@ -1,12 +0,0 @@
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-
-import org.springframework.stereotype.Component;
-
-@Component("NAME")
-public class NAME implements Processor {
-
-  public void process(Exchange exchange) throws Exception {
-      exchange.getIn().setBody("Hello World");
-  }
-}
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/webui/src/api/ProjectModels.ts b/karavan-web/karavan-app/src/main/webui/src/api/ProjectModels.ts
index 4a2170b6..0a401677 100644
--- a/karavan-web/karavan-app/src/main/webui/src/api/ProjectModels.ts
+++ b/karavan-web/karavan-app/src/main/webui/src/api/ProjectModels.ts
@@ -3,8 +3,6 @@ export class AppConfig {
     infrastructure: 'kubernetes' | 'docker' | 'local' = 'local';
     environment: string = '';
     environments: string[] = [];
-    runtime: string = '';
-    runtimes: string[] = [];
     status: any[] = [];
 }
 
@@ -19,12 +17,11 @@ export class Project {
     projectId: string = '';
     name: string = '';
     description: string = '';
-    runtime: string = '';
     lastCommit: string = '';
     lastCommitTimestamp: number = 0;
     type: string = ProjectType.normal;
 
-    public constructor(projectId: string, name: string, description: string, runtime: string, lastCommit: string, type: string);
+    public constructor(projectId: string, name: string, description: string, lastCommit: string, type: string);
     public constructor(init?: Partial<Project>);
     public constructor(...args: any[]) {
         if (args.length === 1) {
@@ -34,10 +31,9 @@ export class Project {
             this.projectId = args[0];
             this.name = args[1];
             this.description = args[2];
-            this.runtime = args[3];
-            this.lastCommit = args[4];
-            this.lastCommitTimestamp = args[5];
-            this.type = args[6];
+            this.lastCommit = args[3];
+            this.lastCommitTimestamp = args[4];
+            this.type = args[5];
             return;
         }
     }
diff --git a/karavan-web/karavan-app/src/main/webui/src/api/ProjectService.ts b/karavan-web/karavan-app/src/main/webui/src/api/ProjectService.ts
index 34430a6b..4c0c3335 100644
--- a/karavan-web/karavan-app/src/main/webui/src/api/ProjectService.ts
+++ b/karavan-web/karavan-app/src/main/webui/src/api/ProjectService.ts
@@ -212,10 +212,8 @@ export class ProjectService {
             // ProjectEventBus.selectProject(project);
             KaravanApi.getTemplatesFiles((files: ProjectFile[]) => {
                 files.filter(f => f.name.endsWith('java'))
-                    .filter(f => f.name.startsWith(project.runtime))
                     .forEach(f => {
-                        const name = f.name.replace(project.runtime + '-', '').replace('.java', '');
-                        TemplateApi.saveTemplate(name, f.code);
+                        TemplateApi.saveTemplate(f.name, f.code);
                     })
             });
         });
diff --git a/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebasePage.tsx b/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebasePage.tsx
index 3078d21a..02c6b641 100644
--- a/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebasePage.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebasePage.tsx
@@ -16,20 +16,7 @@
  */
 import React, {useState} from 'react';
 import '../designer/karavan.css';
-import {
-    Flex,
-    FlexItem,
-    PageSection,
-    Switch,
-    Tab,
-    Tabs,
-    Text,
-    TextContent,
-    TextInput,
-    Toolbar,
-    ToolbarContent,
-    ToolbarItem
-} from "@patternfly/react-core";
+import {Flex, FlexItem, PageSection, Switch, Tab, Tabs, Text, TextContent, TextInput, Toolbar, ToolbarContent, ToolbarItem} from "@patternfly/react-core";
 import {MainToolbar} from "../designer/MainToolbar";
 import {KameletsTab} from "./kamelets/KameletsTab";
 import {EipTab} from "./eip/EipTab";
@@ -88,9 +75,11 @@ export const KnowledgebasePage = (props: Props) => {
                     </FlexItem>
                 </Flex>
             </PageSection>
-            {tab === 'kamelets' && <KameletsTab dark={props.dark} filter={filter} customOnly={customOnly}/>}
-            {tab === 'eip' && <EipTab dark={props.dark} filter={filter}/>}
-            {tab === 'components' && <ComponentsTab dark={props.dark} filter={filter}/>}
+            <>
+                {tab === 'kamelets' && <KameletsTab dark={props.dark} filter={filter} customOnly={customOnly}/>}
+                {tab === 'eip' && <EipTab dark={props.dark} filter={filter}/>}
+                {tab === 'components' && <ComponentsTab dark={props.dark} filter={filter}/>}
+            </>
         </PageSection>
     )
 
diff --git a/karavan-web/karavan-app/src/main/webui/src/project/build/BuildPanel.tsx b/karavan-web/karavan-app/src/main/webui/src/project/build/BuildPanel.tsx
index e950ff00..d7a305fe 100644
--- a/karavan-web/karavan-app/src/main/webui/src/project/build/BuildPanel.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/project/build/BuildPanel.tsx
@@ -34,9 +34,13 @@ export function BuildPanel () {
     );
 
     function deleteEntity() {
-        KaravanApi.manageContainer(config.environment, 'project', project.projectId, 'delete', res => {
-            setShowLog(false, 'container', undefined)
-        });
+        const buildName = getBuildName();
+        if (buildName) {
+            KaravanApi.manageContainer(config.environment, 'build', buildName, 'delete', res => {
+                EventBus.sendAlert("Container deleted", "Container " + buildName + " deleted", 'info')
+                setShowLog(false, 'container', undefined)
+            });
+        }
     }
 
     function build() {
@@ -67,9 +71,18 @@ export function BuildPanel () {
         </Tooltip>)
     }
 
+    function getContainerStatus() {
+        return containers.filter(c => c.projectId === project.projectId && c.type === 'build').at(0);
+    }
+
+    function getBuildName() {
+        const status = getContainerStatus();
+        return status?.containerName;
+    }
+
     function getBuildState() {
-        const status = containers.filter(c => c.projectId === project.projectId && c.type === 'build').at(0);
-        const buildName = status?.containerName;
+        const status = getContainerStatus();
+        const buildName = getBuildName();
         const state = status?.state;
         let buildTime = 0;
         if (status?.created) {
diff --git a/karavan-web/karavan-app/src/main/webui/src/project/build/ImagesPanel.tsx b/karavan-web/karavan-app/src/main/webui/src/project/build/ImagesPanel.tsx
index f16752a5..7bc44666 100644
--- a/karavan-web/karavan-app/src/main/webui/src/project/build/ImagesPanel.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/project/build/ImagesPanel.tsx
@@ -44,7 +44,7 @@ export function ImagesPanel () {
     }
 
     function getProjectImage(): string | undefined {
-        const file = files.filter(f => f.name === 'project-compose.yaml').at(0);
+        const file = files.filter(f => f.name === 'docker-compose.yaml').at(0);
         if (file) {
             const dc = ServicesYaml.yamlToServices(file.code);
             const dcs = dc.services.filter(s => s.container_name === project.projectId).at(0);
diff --git a/karavan-web/karavan-app/src/main/webui/src/project/files/FilesTab.tsx b/karavan-web/karavan-app/src/main/webui/src/project/files/FilesTab.tsx
index 0aba226c..409fff07 100644
--- a/karavan-web/karavan-app/src/main/webui/src/project/files/FilesTab.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/project/files/FilesTab.tsx
@@ -117,7 +117,7 @@ export function FilesTab () {
                                 <Td modifier={"fitContent"}>
                                     {canDeleteFiles() &&
                                         <Button style={{padding: '0'}} variant={"plain"}
-                                                isDisabled={['application.properties', 'project-compose.yaml'].includes(file.name)}
+                                                isDisabled={['application.properties', 'docker-compose.yaml'].includes(file.name)}
                                                 onClick={e =>
                                                     useFileStore.setState({file: file, operation: "delete"})
                                         }>
diff --git a/karavan-web/karavan-app/src/main/webui/src/projects/CreateProjectModal.tsx b/karavan-web/karavan-app/src/main/webui/src/projects/CreateProjectModal.tsx
index 75965bfd..87d8f80e 100644
--- a/karavan-web/karavan-app/src/main/webui/src/projects/CreateProjectModal.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/projects/CreateProjectModal.tsx
@@ -2,14 +2,12 @@ import React, {useState} from 'react';
 import {
     Button, Form, FormGroup, FormHelperText, HelperText, HelperTextItem,
     Modal,
-    ModalVariant, TextInput, ToggleGroup, ToggleGroupItem,
+    ModalVariant, TextInput
 } from '@patternfly/react-core';
 import '../designer/karavan.css';
-import {CamelUtil} from "karavan-core/lib/api/CamelUtil";
-import {useAppConfigStore, useProjectStore} from "../api/ProjectStore";
+import {useProjectStore} from "../api/ProjectStore";
 import {ProjectService} from "../api/ProjectService";
 import {Project} from "../api/ProjectModels";
-import {QuarkusIcon, SpringIcon, CamelIcon} from "../designer/utils/KaravanIcons";
 import {CamelUi} from "../designer/utils/CamelUi";
 
 
@@ -19,13 +17,10 @@ export function CreateProjectModal () {
     const [name, setName] = useState('');
     const [description, setDescription] = useState('');
     const [projectId, setProjectId] = useState('');
-    const {config} = useAppConfigStore();
-    const [runtime, setRuntime] = useState(config.runtime);
 
     function cleanValues() {
         setName("");
         setDescription("");
-        setRuntime(config.runtime);
         setProjectId("");
     }
 
@@ -35,7 +30,7 @@ export function CreateProjectModal () {
     }
 
     function confirmAndCloseModal() {
-        ProjectService.createProject(new Project({name: name, description: description, runtime: runtime, projectId: projectId}));
+        ProjectService.createProject(new Project({name: name, description: description, projectId: projectId}));
         useProjectStore.setState({operation: "none"});
         cleanValues();
     }
@@ -46,20 +41,6 @@ export function CreateProjectModal () {
         }
     }
 
-    function getIcon(runtime: string) {
-        if (runtime === 'quarkus') return QuarkusIcon();
-        else if (runtime === 'spring-boot') return SpringIcon();
-        else if (runtime === 'camel-main') return CamelIcon();
-    }
-
-    function getTitle(runtime: string) {
-        if (runtime === 'quarkus') return "Quarkus";
-        else if (runtime === 'spring-boot') return "Spring";
-        else if (runtime === 'camel-main') return "Camel";
-    }
-
-    const runtimes = config.runtimes;
-    const defaultRuntime = config.runtime;
     const isReady = projectId && name && description && !['templates', 'kamelets'].includes(projectId);
     return (
         <Modal
@@ -97,21 +78,6 @@ export function CreateProjectModal () {
                         </HelperText>
                     </FormHelperText>
                 </FormGroup>
-                <FormGroup label="Runtime" fieldId="runtime" isRequired>
-                    <ToggleGroup>
-                        {runtimes?.map((r: string) => (
-                            <ToggleGroupItem key={r} id={r} name={r}
-                                             aria-label="runtime"
-                                             isSelected={r === runtime}
-                                             text={getTitle(r)}
-                                             icon={getIcon(r)}
-                                              onChange={(_, checked) => {
-                                                 if (checked) setRuntime(r)
-                                             }}
-                            />
-                        ))}
-                    </ToggleGroup>
-                </FormGroup>
             </Form>
         </Modal>
     )
diff --git a/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx b/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx
index c5d96a50..b505eea4 100644
--- a/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx
@@ -88,7 +88,6 @@ export function ProjectsPage () {
             <Table aria-label="Projects" variant={"compact"}>
                 <Thead>
                     <Tr>
-                        <Th key='type'>Runtime</Th>
                         <Th key='projectId'>Project ID</Th>
                         <Th key='name'>Name</Th>
                         <Th key='description'>Description</Th>
diff --git a/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsTableRow.tsx b/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsTableRow.tsx
index c5bf9f9a..77bfc270 100644
--- a/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsTableRow.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsTableRow.tsx
@@ -16,7 +16,6 @@ import {
     useProjectStore, useStatusesStore,
 } from "../api/ProjectStore";
 import {shallow} from "zustand/shallow";
-import {CamelIcon, QuarkusIcon, SpringIcon} from "../designer/utils/KaravanIcons";
 import {useNavigate} from "react-router-dom";
 
 interface Props {
@@ -45,21 +44,11 @@ export function ProjectsTableRow (props: Props) {
         });
     }
 
-    function getIcon(runtime: string) {
-        if (runtime === 'quarkus') return QuarkusIcon();
-        else if (runtime === 'spring-boot') return SpringIcon();
-        else if (runtime === 'camel-main') return CamelIcon();
-    }
-
     const project = props.project;
     const isBuildIn = ['kamelets', 'templates'].includes(project.projectId);
-    const badge = isBuildIn ? project.projectId.toUpperCase().charAt(0) : project.runtime.substring(0, 1).toUpperCase();
     const commit = project.lastCommit ? project.lastCommit?.substr(0, 7) : "...";
     return (
         <Tr key={project.projectId}>
-            <Td className="icon-td">
-                {getIcon(project.runtime)}
-            </Td>
             <Td>
                 <Button style={{padding: '6px'}} variant={"link"} onClick={e => {
                     // setProject(project, "select");
diff --git a/karavan-web/karavan-app/src/main/webui/src/services/CreateServiceModal.tsx b/karavan-web/karavan-app/src/main/webui/src/services/CreateServiceModal.tsx
index 85384aaa..ca24782d 100644
--- a/karavan-web/karavan-app/src/main/webui/src/services/CreateServiceModal.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/services/CreateServiceModal.tsx
@@ -9,7 +9,6 @@ import {CamelUtil} from "karavan-core/lib/api/CamelUtil";
 import {useAppConfigStore, useProjectStore} from "../api/ProjectStore";
 import {ProjectService} from "../api/ProjectService";
 import {Project} from "../api/ProjectModels";
-import {QuarkusIcon, SpringIcon} from "../designer/utils/KaravanIcons";
 import {CamelUi} from "../designer/utils/CamelUi";
 
 
@@ -35,7 +34,7 @@ export function CreateServiceModal () {
     }
 
     function confirmAndCloseModal () {
-        ProjectService.createProject(new Project({name: name, description: description, runtime: runtime, projectId: projectId}));
+        ProjectService.createProject(new Project({name: name, description: description, projectId: projectId}));
         useProjectStore.setState({operation: "none"});
         cleanValues();
     }
@@ -46,7 +45,6 @@ export function CreateServiceModal () {
         }
     }
 
-    const runtimes = config.runtimes;
     const isReady = projectId && name && description && !['templates', 'kamelets'].includes(projectId);
     return (
         <Modal
@@ -84,21 +82,6 @@ export function CreateServiceModal () {
                         </HelperText>
                     </FormHelperText>
                 </FormGroup>
-                <FormGroup label="Runtime" fieldId="runtime" isRequired>
-                    {runtimes?.map((r: string) => (
-                        <Radio key={r} id={r} name={r} className="radio" aria-label="runtime"
-                               isChecked={r === runtime}
-                               onChange={(_, checked) => {
-                                   if (checked) setRuntime(r)
-                               }}
-                               body={
-                                   <div className="runtime-radio">
-                                       {r === 'quarkus' ? QuarkusIcon() : SpringIcon()}
-                                       <div className="runtime-label">{CamelUtil.capitalizeName(r)}</div>
-                                   </div>}
-                        />
-                    ))}
-                </FormGroup>
             </Form>
         </Modal>
     )
diff --git a/karavan-web/karavan-app/src/main/webui/src/templates/CreateProjectModal.tsx b/karavan-web/karavan-app/src/main/webui/src/templates/CreateProjectModal.tsx
index 75965bfd..87d8f80e 100644
--- a/karavan-web/karavan-app/src/main/webui/src/templates/CreateProjectModal.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/templates/CreateProjectModal.tsx
@@ -2,14 +2,12 @@ import React, {useState} from 'react';
 import {
     Button, Form, FormGroup, FormHelperText, HelperText, HelperTextItem,
     Modal,
-    ModalVariant, TextInput, ToggleGroup, ToggleGroupItem,
+    ModalVariant, TextInput
 } from '@patternfly/react-core';
 import '../designer/karavan.css';
-import {CamelUtil} from "karavan-core/lib/api/CamelUtil";
-import {useAppConfigStore, useProjectStore} from "../api/ProjectStore";
+import {useProjectStore} from "../api/ProjectStore";
 import {ProjectService} from "../api/ProjectService";
 import {Project} from "../api/ProjectModels";
-import {QuarkusIcon, SpringIcon, CamelIcon} from "../designer/utils/KaravanIcons";
 import {CamelUi} from "../designer/utils/CamelUi";
 
 
@@ -19,13 +17,10 @@ export function CreateProjectModal () {
     const [name, setName] = useState('');
     const [description, setDescription] = useState('');
     const [projectId, setProjectId] = useState('');
-    const {config} = useAppConfigStore();
-    const [runtime, setRuntime] = useState(config.runtime);
 
     function cleanValues() {
         setName("");
         setDescription("");
-        setRuntime(config.runtime);
         setProjectId("");
     }
 
@@ -35,7 +30,7 @@ export function CreateProjectModal () {
     }
 
     function confirmAndCloseModal() {
-        ProjectService.createProject(new Project({name: name, description: description, runtime: runtime, projectId: projectId}));
+        ProjectService.createProject(new Project({name: name, description: description, projectId: projectId}));
         useProjectStore.setState({operation: "none"});
         cleanValues();
     }
@@ -46,20 +41,6 @@ export function CreateProjectModal () {
         }
     }
 
-    function getIcon(runtime: string) {
-        if (runtime === 'quarkus') return QuarkusIcon();
-        else if (runtime === 'spring-boot') return SpringIcon();
-        else if (runtime === 'camel-main') return CamelIcon();
-    }
-
-    function getTitle(runtime: string) {
-        if (runtime === 'quarkus') return "Quarkus";
-        else if (runtime === 'spring-boot') return "Spring";
-        else if (runtime === 'camel-main') return "Camel";
-    }
-
-    const runtimes = config.runtimes;
-    const defaultRuntime = config.runtime;
     const isReady = projectId && name && description && !['templates', 'kamelets'].includes(projectId);
     return (
         <Modal
@@ -97,21 +78,6 @@ export function CreateProjectModal () {
                         </HelperText>
                     </FormHelperText>
                 </FormGroup>
-                <FormGroup label="Runtime" fieldId="runtime" isRequired>
-                    <ToggleGroup>
-                        {runtimes?.map((r: string) => (
-                            <ToggleGroupItem key={r} id={r} name={r}
-                                             aria-label="runtime"
-                                             isSelected={r === runtime}
-                                             text={getTitle(r)}
-                                             icon={getIcon(r)}
-                                              onChange={(_, checked) => {
-                                                 if (checked) setRuntime(r)
-                                             }}
-                            />
-                        ))}
-                    </ToggleGroup>
-                </FormGroup>
             </Form>
         </Modal>
     )
diff --git a/karavan-web/karavan-app/src/main/webui/src/templates/TemplatesTableRow.tsx b/karavan-web/karavan-app/src/main/webui/src/templates/TemplatesTableRow.tsx
index 0f15f260..0fb1d0af 100644
--- a/karavan-web/karavan-app/src/main/webui/src/templates/TemplatesTableRow.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/templates/TemplatesTableRow.tsx
@@ -25,7 +25,6 @@ export function TemplatesTableRow (props: Props) {
 
     const project = props.project;
     const isBuildIn = ['kamelets', 'templates'].includes(project.projectId);
-    const badge = isBuildIn ? project.projectId.toUpperCase().charAt(0) : project.runtime.substring(0, 1).toUpperCase();
     const commit = project.lastCommit ? project.lastCommit?.substr(0, 7) : "...";
     return (
         <Tr key={project.projectId}>