diff --git a/.gitignore b/.gitignore
index 787a47f96c6a04b01b50458e05fc15586f993380..1986982a57ef68d0e58651f53162535ec50ebe34 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
 # File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig
-# Created by https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,linux,macos,python,r
-# Edit at https://www.toptal.com/developers/gitignore?templates=windows,visualstudiocode,linux,macos,python,r
+# Created by https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,r,python,macos,linux
+# Edit at https://www.toptal.com/developers/gitignore?templates=windows,visualstudiocode,r,python,macos,linux
 
 ### Linux ###
 *~
@@ -322,7 +322,7 @@ $RECYCLE.BIN/
 # Windows shortcuts
 *.lnk
 
-# End of https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,linux,macos,python,r
+# End of https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,r,python,macos,linux
 
 # Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option)
 
diff --git a/.markdownlint.json b/.markdownlint.json
index bf68de237524b9e77410e72f0ff5b2326bb7e6de..eee9681d6e8bc3fe10c0e1ded36e492988178ac0 100644
--- a/.markdownlint.json
+++ b/.markdownlint.json
@@ -47,9 +47,7 @@
   "MD040": {
     "language_only": false
   },
-  "MD041": {
-    "level": 1
-  },
+  "MD041": false,
   "MD043": false,
   "MD044": {
     "code_blocks": false,
@@ -60,6 +58,7 @@
       "UAB Research Computing"
     ]
   },
+  "MD045": false,
   "MD046": {
     "style": "fenced"
   },
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..751b8d3fa2e90089a9ca6c644b6057607e9f5cda
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,14 @@
+repos:
+  - repo: https://github.com/DavidAnson/markdownlint-cli2
+    rev: v0.13.0
+    hooks:
+      - id: markdownlint-cli2
+        require_serial: true
+  - repo: local
+    hooks:
+      - id: quarto-render
+        name: Build presentation
+        entry: "conda activate quarto && quarto render"
+        language: system
+        always_run: true
+        pass_filenames: false
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000000000000000000000000000000000000..39963d4ebefd98ace1d9ea463d19852fc2f87919
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,4 @@
+{
+  "bracketSameLine": true,
+  "htmlWhitespaceSensitivity": "ignore"
+}