diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f93a654c7a9ce93b29ade54973b3ab5c8d61dd16
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,40 @@
+image: node:14-buster
+
+variables:
+  GIT_SUBMODULE_STRATEGY: recursive
+
+cache:
+  paths:
+    - node_modules
+
+# Fetch dependencies and setup project for compilation.
+install:
+  stage: prepare
+  script:
+    - yarn
+
+# Type check the project
+typecheck:
+  stage: test
+  needs:
+    - install
+  dependencies: 
+    - install
+  script:
+    - yarn typecheck
+
+# Lint the project and check prettier output.
+lint:
+  stage: test
+  allow_failure: true
+  needs:
+    - install
+  dependencies: 
+    - install
+  script:
+    - yarn lint
+    - yarn --check 'src/**/*.{js,jsx,ts,tsx}'
+
+stages:
+  - prepare
+  - test