diff --git a/.gitignore b/.gitignore
index 20d1883ddd50d7456a5a335e4128a770406bc840..935ed9c3483a235a260a05822ea82f628e16f958 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,5 @@ CMakeLists.txt.user*
 Tests/**/*.md5
 Tests/Data/Parabolic/HT/InvalidProjectFiles/*.prj
 web/.netlify
+
+CMakeUserPresets.json
diff --git a/CMakePresets.json b/CMakePresets.json
new file mode 100644
index 0000000000000000000000000000000000000000..2a98efba7daff72d50eaf60120c478ef6d9d189d
--- /dev/null
+++ b/CMakePresets.json
@@ -0,0 +1,30 @@
+{
+  "version": 1,
+  "cmakeMinimumRequired": {
+    "major": 3,
+    "minor": 19,
+    "patch": 0
+  },
+  "configurePresets": [
+    {
+      "name": "release",
+      "displayName": "Default Config (Release)",
+      "description": "Default build using the Ninja generator",
+      "generator": "Ninja",
+      "binaryDir": "${sourceDir}/build/${presetName}",
+      "cacheVariables": {
+        "CMAKE_BUILD_TYPE": "Release",
+        "OGS_BUILD_UTILS": "ON",
+        "OGS_USE_PYTHON": "ON"
+      }
+    },
+    {
+      "name": "debug",
+      "inherits": "release",
+      "displayName": "Default Config (Debug)",
+      "cacheVariables": {
+        "CMAKE_BUILD_TYPE": "Debug"
+      }
+    }
+  ]
+}