diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1ef531ba09fb84a6a70c1fc8f3c6a79e43f8b6e6
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,104 @@
+stages:
+  - init
+  - test
+  - pages
+
+### Static Badges ###
+version:
+  stage: init
+  tags:
+    - leap
+    - zam347
+    - base
+  only:
+    - master
+    - tags
+  script:
+    - chmod +x ./CI/update_badge.sh
+    - chmod +x ./CI/create_version_badge.sh
+    - ./CI/create_version_badge.sh
+  artifacts:
+    name: pages
+    when: always
+    paths:
+      - badges/
+
+### Tests ###
+tests:
+  tags:
+    - leap
+    - zam347
+    - base
+    - django
+  stage: test
+  variables:
+    FAILURE_THRESHOLD: 90
+  before_script:
+    - chmod +x ./CI/update_badge.sh
+    - ./CI/update_badge.sh > /dev/null
+  script:
+    - pip install -r requirements.txt
+    - chmod +x ./CI/run_pytest.sh
+    - ./CI/run_pytest.sh
+  after_script:
+    - ./CI/update_badge.sh > /dev/null
+  artifacts:
+    name: pages
+    when: always
+    paths:
+      - badges/
+
+coverage:
+  tags:
+    - leap
+    - zam347
+    - base
+    - django
+  stage: test
+  variables:
+    FAILURE_THRESHOLD: 50
+    COVERAGE_PASS_THRESHOLD: 80
+  before_script:
+    - chmod +x ./CI/update_badge.sh
+    - ./CI/update_badge.sh > /dev/null
+  script:
+    - pip install -r requirements.txt
+    - chmod +x ./CI/run_pytest_coverage.sh
+    - ./CI/run_pytest_coverage.sh
+  after_script:
+    - ./CI/update_badge.sh > /dev/null
+  artifacts:
+    name: pages
+    when: always
+    paths:
+      - badges/
+      - coverage/
+
+#### Pages ####
+pages:
+  stage: pages
+  tags:
+    - leap
+    - zam347
+    - base
+  script:
+    - mkdir -p public/badges/
+    - cp -af  badges/badge_*.svg public/badges/
+    - ls public/badges/
+    - mkdir -p public/coverage
+    - cp -af coverage/. public/coverage
+    - ls public/coverage
+    - ls public
+  when: always
+  artifacts:
+    name: pages
+    when: always
+    paths:
+      - public
+      - badges/
+      - coverage/
+  cache:
+    key: old-pages
+    paths:
+      - public/badges/
+      - public/coverage/