diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ba455abc44d5b3e077a801ed70d08a86523e1436..2b1b3b62c47498fc7c7befafad7916a65ad485ea 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,42 +1,35 @@
-image: python:3.10-bullseye
+image: ruby:3.2.2-bookworm
 
 stages:
   - build
   - deploy
 
 variables:
-  PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
+  LC_ALL: C.UTF-8
 
-cache:
-  paths:
-    - .cache/pip
-    - venv/
-
-before_script:
-  - python -V
-  - pip install virtualenv
-  - virtualenv venv
-  - source venv/bin/activate
-  - pip install -r requirements.txt
-  - apt-get update && apt-get install -y jq  # Install jq
-
-build-book:
+build-page:
   stage: build
+  variables:
+    JEKYLL_ENV: ${{ CI_COMMIT_BRANCH == "publish" && "production" || "development" }}
+  before_script:
+    - gem install bundler
+    - bundle install
+    - chmod +x ./build-page.sh
   script:
     - |
       if [ "$CI_COMMIT_BRANCH" == "publish" ]; then
-        echo "Building production version"
-        teachbooks build --publish book/ > >(tee stdout.log) 2> >(tee stderr.log >&2)
+        echo "Running on publish branch"
+        ./build-page.sh "/" true
+      elif [ "$CI_COMMIT_BRANCH" == "main" ]; then
+        echo "Running on main branch"
+        ./build-page.sh "/2024/draft" false
       else
-        echo "Building draft version"
-        teachbooks build book/ > >(tee stdout.log) 2> >(tee stderr.log >&2)
+        echo "Running on other branches"
+        ./build-page.sh "/draft" false
       fi
   artifacts:
     paths:
-      - book/_build/html
-      - stdout.log
-      - stderr.log
-    expire_in: 1 week
+      - public
   rules:
     - if: $CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "publish"
     - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "publish"
@@ -44,46 +37,44 @@ build-book:
 
 deploy-draft:
   stage: deploy
-  needs: ["build-book"]
+  needs: ["build-page"]
   script:
     - |
-      BUILD_JOB_ID=$(curl -s -H "PRIVATE-TOKEN: $CI_JOB_TOKEN" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/pipelines/${CI_PIPELINE_ID}/jobs?scope[]=success" | jq '.[] | select(.name=="build-book") | .id')
-      curl -X POST https://mude.citg.tudelft.nl/hooks/book-deploy-draft \
+      curl -X POST https://mude.citg.tudelft.nl/hooks/website-deploy-draft \
         -H "Content-Type: application/json" \
-        -H "X-Gitlab-Token: glpat-m4CzsDqHnXNn3Pf5Whyd" \
+        -H "X-Gitlab-Token: glpat-sQ82fiSMo1kCi2TpgSfr" \
         -d '{
           "object_kind": "pipeline",
           "object_attributes": {
             "status": "success",
             "ref": "main"
-          },
-          "build_job_id": "'$BUILD_JOB_ID'"
+          }
         }'
   environment:
     name: draft
-    url: https://mude.citg.tudelft.nl/2024/book/draft
+    url: https://mude.citg.tudelft.nl/2024/draft
   rules:
-    - if: $CI_COMMIT_BRANCH == "main"
+    - if: $CI_COMMIT_BRANCH == "main" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"
+      when: always
 
 deploy-production:
   stage: deploy
-  needs: ["build-book"]
+  needs: ["build-page"]
   script:
     - |
-      BUILD_JOB_ID=$(curl -s -H "PRIVATE-TOKEN: $CI_JOB_TOKEN" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/pipelines/${CI_PIPELINE_ID}/jobs?scope[]=success" | jq '.[] | select(.name=="build-book") | .id')
-      curl -X POST https://mude.citg.tudelft.nl/hooks/book-deploy-production \
+      curl -X POST https://mude.citg.tudelft.nl/hooks/website-deploy \
         -H "Content-Type: application/json" \
-        -H "X-Gitlab-Token: glpat-m4CzsDqHnXNn3Pf5Whyd" \
+        -H "X-Gitlab-Token: glpat-sQ82fiSMo1kCi2TpgSfr" \
         -d '{
           "object_kind": "pipeline",
           "object_attributes": {
             "status": "success",
             "ref": "publish"
-          },
-          "build_job_id": "'$BUILD_JOB_ID'"
+          }
         }'
   environment:
     name: production
-    url: https://mude.citg.tudelft.nl/2024/book
+    url: https://mude.citg.tudelft.nl/2024
   rules:
-    - if: $CI_COMMIT_BRANCH == "publish"
\ No newline at end of file
+    - if: $CI_COMMIT_BRANCH == "publish" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "publish"
+      when: always
\ No newline at end of file