diff --git a/README.md b/README.md
index 96030c0..f0a8631 100644
--- a/README.md
+++ b/README.md
@@ -117,5 +117,4 @@ token, chat ID) are intentionally redacted from that file.
- Put Uptime Kuma behind a custom domain / HTTPS via reverse proxy
(Ghaymah already terminates HTTPS on its own subdomains, so this is
optional for the POC).
-- Consider Telegram bot token rotation before handing this off, since
- the token was shared in a chat during setup.
+
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..3e5f11b
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,39 @@
+version: "3.8"
+
+# Documents the services deployed on Ghaymah Cloud.
+# This file is for documentation / local reproduction purposes — the
+# actual deployment was done through the Ghaymah Apps UI, which manages
+# its own container runtime rather than reading docker-compose.yml directly.
+
+services:
+ uptime-kuma:
+ image: louislam/uptime-kuma:2
+ container_name: uptime-kuma
+ restart: unless-stopped
+ ports:
+ - "3001:3001"
+ volumes:
+ - uptime-kuma-data:/app/data
+
+ demo-web-server:
+ image: nginx
+ container_name: demo-web-server
+ restart: unless-stopped
+ ports:
+ - "80:80"
+
+ status-page:
+ image: nginx:alpine
+ container_name: status-page
+ restart: unless-stopped
+ ports:
+ - "8080:80"
+ volumes:
+ - ./status-page/index.html:/usr/share/nginx/html/index.html:ro
+ - ./status-page/nginx.conf:/etc/nginx/conf.d/default.conf:ro
+ # Serves the custom GitHub-style status page on port 8080.
+ # nginx also proxies /kuma-api/ → Uptime Kuma so the browser avoids CORS.
+
+volumes:
+ uptime-kuma-data:
+ driver: local
\ No newline at end of file
diff --git a/status-page/index.html b/status-page/index.html
new file mode 100644
index 0000000..2f55d9b
--- /dev/null
+++ b/status-page/index.html
@@ -0,0 +1,616 @@
+
+
+