diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d862422d78267f9bbc4bdb51132765e98a9bffaf..1180dc01f3045081069a7ad9fe222ec2531fe5e7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,34 +4,46 @@ stages:
   - deploy
 
 variables:
-  IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
+  DOCKER_DRIVER: overlay2
+  CLIENT_IMAGE: $CI_REGISTRY_IMAGE/client:$CI_COMMIT_SHORT_SHA
+  NEO4J_IMAGE: $CI_REGISTRY_IMAGE/neo4j:$CI_COMMIT_SHORT_SHA
 
-# Docker build
-build_image:
-  stage: build
+.default-docker-job:
   image: docker:24.0
   services:
     - docker:24.0-dind
-  script:
+  before_script:
     - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
-    - docker build -t $IMAGE_TAG .
-  only:
-    - main
 
-# Push to registry
-push_image:
+# Build both images
+build_client:
+  extends: .default-docker-job
+  stage: build
+  script:
+    - docker build -t $CLIENT_IMAGE ./client
+
+build_neo4j:
+  extends: .default-docker-job
+  stage: build
+  script:
+    - docker build -t $NEO4J_IMAGE ./neo4j
+
+# Push both images
+push_client:
+  extends: .default-docker-job
   stage: push
-  image: docker:24.0
-  services:
-    - docker:24.0-dind
   script:
-    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
-    - docker push $IMAGE_TAG
-  only:
-    - main
-  needs: [build_image]
+    - docker push $CLIENT_IMAGE
+  needs: [build_client]
+
+push_neo4j:
+  extends: .default-docker-job
+  stage: push
+  script:
+    - docker push $NEO4J_IMAGE
+  needs: [build_neo4j]
 
-# Deploy to Kubernetes (optional, requires kubectl config)
+# Optional deployment (e.g., via kubectl or Helm)
 # deploy:
 #   stage: deploy
 #   image:
@@ -40,8 +52,8 @@ push_image:
 #   script:
 #     - echo "$KUBECONFIG" > kubeconfig.yaml
 #     - export KUBECONFIG=$CI_PROJECT_DIR/kubeconfig.yaml
-#     - kubectl config get-contexts
-#     - kubectl set image deployment/mon-deploiement mon-container=$IMAGE_TAG --namespace=mon-namespace
+#     - kubectl set image deployment/client client-container=$CLIENT_IMAGE --namespace=mon-namespace
+#     - kubectl set image deployment/neo4j neo4j-container=$NEO4J_IMAGE --namespace=mon-namespace
 #   only:
 #     - main
-#   needs: [push_image]
+#   needs: [push_client, push_neo4j]