diff --git a/blueprints/gatus/docker-compose.yml b/blueprints/gatus/docker-compose.yml
new file mode 100644
index 00000000..062db80b
--- /dev/null
+++ b/blueprints/gatus/docker-compose.yml
@@ -0,0 +1,14 @@
+version: "3.8"
+
+services:
+ gatus:
+ image: ghcr.io/twin/gatus:v5.36.0
+ restart: unless-stopped
+ expose:
+ - 8080
+ volumes:
+ - gatus-data:/data
+ - ../files/config.yaml:/config/config.yaml:ro
+
+volumes:
+ gatus-data: {}
diff --git a/blueprints/gatus/gatus.svg b/blueprints/gatus/gatus.svg
new file mode 100644
index 00000000..e095c099
--- /dev/null
+++ b/blueprints/gatus/gatus.svg
@@ -0,0 +1,8 @@
+
diff --git a/blueprints/gatus/meta.json b/blueprints/gatus/meta.json
new file mode 100644
index 00000000..6ab041de
--- /dev/null
+++ b/blueprints/gatus/meta.json
@@ -0,0 +1,18 @@
+{
+ "id": "gatus",
+ "name": "Gatus",
+ "version": "v5.36.0",
+ "description": "Gatus is an automated service health dashboard for monitoring HTTP, DNS, TCP, ICMP, and other endpoints.",
+ "logo": "gatus.svg",
+ "links": {
+ "github": "https://github.com/TwiN/gatus",
+ "website": "https://gatus.io/",
+ "docs": "https://github.com/TwiN/gatus#configuration"
+ },
+ "tags": [
+ "monitoring",
+ "status-page",
+ "uptime",
+ "observability"
+ ]
+}
diff --git a/blueprints/gatus/template.toml b/blueprints/gatus/template.toml
new file mode 100644
index 00000000..cd2fbd2e
--- /dev/null
+++ b/blueprints/gatus/template.toml
@@ -0,0 +1,31 @@
+[variables]
+main_domain = "${domain}"
+monitor_name = "Example website"
+monitor_url = "https://example.org/"
+
+[config]
+[[config.domains]]
+serviceName = "gatus"
+port = 8080
+host = "${main_domain}"
+
+[[config.mounts]]
+filePath = "config.yaml"
+content = """
+storage:
+ type: sqlite
+ path: /data/data.db
+
+ui:
+ title: Gatus
+ header: Gatus
+
+endpoints:
+ - name: ${monitor_name}
+ group: external
+ url: "${monitor_url}"
+ interval: 5m
+ conditions:
+ - "[STATUS] == 200"
+ - "[CERTIFICATE_EXPIRATION] > 48h"
+"""
diff --git a/blueprints/paperless-ngx/docker-compose.yml b/blueprints/paperless-ngx/docker-compose.yml
new file mode 100644
index 00000000..fe09da34
--- /dev/null
+++ b/blueprints/paperless-ngx/docker-compose.yml
@@ -0,0 +1,62 @@
+version: "3.8"
+
+services:
+ paperless-ngx:
+ image: ghcr.io/paperless-ngx/paperless-ngx:2.20.15
+ restart: unless-stopped
+ depends_on:
+ paperless-ngx-db:
+ condition: service_healthy
+ paperless-ngx-broker:
+ condition: service_healthy
+ expose:
+ - 8000
+ environment:
+ PAPERLESS_REDIS: redis://paperless-ngx-broker:6379
+ PAPERLESS_DBHOST: paperless-ngx-db
+ PAPERLESS_DBNAME: paperless
+ PAPERLESS_DBUSER: paperless
+ PAPERLESS_DBPASS: ${POSTGRES_PASSWORD}
+ PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY}
+ PAPERLESS_URL: ${PAPERLESS_URL}
+ PAPERLESS_TIME_ZONE: ${PAPERLESS_TIME_ZONE}
+ PAPERLESS_OCR_LANGUAGE: ${PAPERLESS_OCR_LANGUAGE}
+ volumes:
+ - paperless-data:/usr/src/paperless/data
+ - paperless-media:/usr/src/paperless/media
+ - paperless-export:/usr/src/paperless/export
+ - paperless-consume:/usr/src/paperless/consume
+
+ paperless-ngx-db:
+ image: postgres:18-alpine
+ restart: unless-stopped
+ environment:
+ POSTGRES_DB: paperless
+ POSTGRES_USER: paperless
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
+ volumes:
+ - paperless-db:/var/lib/postgresql
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U paperless -d paperless"]
+ interval: 10s
+ timeout: 5s
+ retries: 5
+
+ paperless-ngx-broker:
+ image: redis:8-alpine
+ restart: unless-stopped
+ volumes:
+ - paperless-redis:/data
+ healthcheck:
+ test: ["CMD", "redis-cli", "ping"]
+ interval: 10s
+ timeout: 5s
+ retries: 5
+
+volumes:
+ paperless-data: {}
+ paperless-media: {}
+ paperless-export: {}
+ paperless-consume: {}
+ paperless-db: {}
+ paperless-redis: {}
diff --git a/blueprints/paperless-ngx/meta.json b/blueprints/paperless-ngx/meta.json
new file mode 100644
index 00000000..ac712c4e
--- /dev/null
+++ b/blueprints/paperless-ngx/meta.json
@@ -0,0 +1,18 @@
+{
+ "id": "paperless-ngx",
+ "name": "Paperless-ngx",
+ "version": "2.20.15",
+ "description": "Paperless-ngx is a self-hosted document management system for scanning, indexing, and archiving documents.",
+ "logo": "paperless-ngx.svg",
+ "links": {
+ "github": "https://github.com/paperless-ngx/paperless-ngx",
+ "website": "https://paperless-ngx.com/",
+ "docs": "https://docs.paperless-ngx.com/"
+ },
+ "tags": [
+ "documents",
+ "ocr",
+ "productivity",
+ "self-hosted"
+ ]
+}
diff --git a/blueprints/paperless-ngx/paperless-ngx.svg b/blueprints/paperless-ngx/paperless-ngx.svg
new file mode 100644
index 00000000..d428a271
--- /dev/null
+++ b/blueprints/paperless-ngx/paperless-ngx.svg
@@ -0,0 +1,10 @@
+
diff --git a/blueprints/paperless-ngx/template.toml b/blueprints/paperless-ngx/template.toml
new file mode 100644
index 00000000..f7ec74cb
--- /dev/null
+++ b/blueprints/paperless-ngx/template.toml
@@ -0,0 +1,20 @@
+[variables]
+main_domain = "${domain}"
+postgres_password = "${password:32}"
+paperless_secret_key = "${password:64}"
+paperless_url = "http://${main_domain}"
+paperless_timezone = "UTC"
+paperless_ocr_language = "eng"
+
+[config]
+[[config.domains]]
+serviceName = "paperless-ngx"
+port = 8000
+host = "${main_domain}"
+
+[config.env]
+POSTGRES_PASSWORD = "${postgres_password}"
+PAPERLESS_SECRET_KEY = "${paperless_secret_key}"
+PAPERLESS_URL = "${paperless_url}"
+PAPERLESS_TIME_ZONE = "${paperless_timezone}"
+PAPERLESS_OCR_LANGUAGE = "${paperless_ocr_language}"