Initial commit: DashCaddy v1.0

Full codebase including API server (32 modules + routes), dashboard frontend,
DashCA certificate distribution, installer script, and deployment skills.
This commit is contained in:
2026-03-05 02:26:12 -08:00
commit f61e85d9a7
337 changed files with 75282 additions and 0 deletions

21
status/assets/.htaccess Normal file
View File

@@ -0,0 +1,21 @@
# Font file headers to prevent sanitizer issues
<FilesMatch "\.(woff2|woff|ttf|eot)$">
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header set Access-Control-Allow-Headers "Content-Type"
Header set Cache-Control "public, max-age=31536000"
# Proper MIME types
<IfModule mod_mime.c>
AddType font/woff2 .woff2
AddType font/woff .woff
AddType font/ttf .ttf
AddType application/vnd.ms-fontobject .eot
</IfModule>
</FilesMatch>
# Prevent direct access to font conversion scripts
<FilesMatch "\.(py|bat)$">
Order allow,deny
Deny from all
</FilesMatch>

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 972 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
status/assets/chat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 972 KiB

BIN
status/assets/emby.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

BIN
status/assets/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 638 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><rect width="64" height="64" rx="12" fill="#0e1116"/><path d="M16 38h20a8 8 0 1 0-1.8-15.7A9.5 9.5 0 0 0 12 30c0 4.4 3.6 8 8 8z" fill="#8FD6FF"/></svg>

After

Width:  |  Height:  |  Size: 211 B

91
status/assets/fonts.css Normal file
View File

@@ -0,0 +1,91 @@
/* Sami Sans Font Family - External CSS */
@font-face {
font-family: 'Sami Sans';
src: url('fonts/SamiSans-Regular.woff2') format('woff2'),
url('fonts/SamiSans-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Sami Sans';
src: url('fonts/SamiSans-Regular.woff2') format('woff2'),
url('fonts/SamiSans-Italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Sami Sans';
src: url('fonts/SamiSans-Medium.woff2') format('woff2'),
url('fonts/SamiSans-Medium.ttf') format('truetype');
font-weight: 500;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Sami Sans';
src: url('fonts/SamiSans-SemiBold.woff2') format('woff2'),
url('fonts/SamiSans-SemiBold.ttf') format('truetype');
font-weight: 600;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Sami Sans';
src: url('fonts/SamiSans-Bold.woff2') format('woff2'),
url('fonts/SamiSans-Bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Sami Sans';
src: url('fonts/SamiSans-ExtraBold.woff2') format('woff2'),
url('fonts/SamiSans-ExtraBold.ttf') format('truetype');
font-weight: 800;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Sami Sans';
src: url('fonts/SamiSans-Black.woff2') format('woff2'),
url('fonts/SamiSans-Black.ttf') format('truetype');
font-weight: 900;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Sami Sans';
src: url('fonts/SamiSans-Light.woff2') format('woff2'),
url('fonts/SamiSans-Light.ttf') format('truetype');
font-weight: 300;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Sami Sans';
src: url('fonts/SamiSans-ExtraLight.woff2') format('woff2'),
url('fonts/SamiSans-ExtraLight.ttf') format('truetype');
font-weight: 200;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Sami Sans';
src: url('fonts/SamiSans-Thin.woff2') format('woff2'),
url('fonts/SamiSans-Thin.ttf') format('truetype');
font-weight: 100;
font-style: normal;
font-display: swap;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
status/assets/icon-192.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
status/assets/icon-512.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
status/assets/jellyfin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
status/assets/nginx.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
status/assets/pics.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
status/assets/plex.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
status/assets/prowlarr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

BIN
status/assets/radarr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
status/assets/router.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

View File

@@ -0,0 +1,20 @@
{
"name": "SAMI-CLOUD Status",
"short_name": "SAMI-CLOUD",
"start_url": "index.html",
"display": "standalone",
"background_color": "#0b0f1a",
"theme_color": "#0e1116",
"icons": [
{
"src": "assets/icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "assets/icon-512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}

BIN
status/assets/sonarr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

BIN
status/assets/syncthing.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="16" cy="16" r="6"/><path d="M16 2v4M16 26v4M2 16h4M26 16h4M6.2 6.2l2.8 2.8M23 23l2.8 2.8M6.2 25.8L9 23M23 9l2.8-2.8"/></g></svg>

After

Width:  |  Height:  |  Size: 277 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 3c-1 6 4 12 10 13-2 7-9 12-17 10-8-2-12-10-10-18C6 4 10 1 15 1c-3 4-3 9 0 13 3 5 9 7 14 5C23 17 18 9 21 3z"/></g></svg>

After

Width:  |  Height:  |  Size: 293 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M8 24h14a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 18c0 3.3 2.7 6 6 6z"/></g></svg>

After

Width:  |  Height:  |  Size: 218 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M10 23l-2 3M16 23l-2 3M22 23l-2 3"/><path d="M8 20h12a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 14c0 3.3 2.7 6 6 6z"/></g></svg>

After

Width:  |  Height:  |  Size: 263 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M7 16h18M5 20h22M7 24h18"/><path d="M8 13h14a6 6 0 1 0-1.4-6.8A7 7 0 0 0 4 12"/></g></svg>

After

Width:  |  Height:  |  Size: 236 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="9" cy="10" r="4"/><path d="M9 2v2M9 16v2M1 10h2M15 10h2M3.5 4.5l1.4 1.4M13.1 14.1l1.4 1.4M3.5 15.5L4.9 14.1M13.1 5.9l1.4-1.4"/><path d="M10 24h10a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 18c0 3.3 2.7 6 6 6z"/></g></svg>

After

Width:  |  Height:  |  Size: 358 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 4c-1 4 2 8 6 9-1 5-6 8-11 7"/><path d="M10 24h10a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 18c0 3.3 2.7 6 6 6z"/></g></svg>

After

Width:  |  Height:  |  Size: 286 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M9 22l-3 5M16 22l-3 5M23 22l-3 5"/><path d="M8 19h14a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 13c0 3.3 2.7 6 6 6z"/></g></svg>

After

Width:  |  Height:  |  Size: 262 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M9 22l-3 5M23 22l-3 5"/><path d="M16 24l0 4M14 27h4M14 25h4"/><path d="M8 19h14a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 13c0 3.3 2.7 6 6 6z"/></g></svg>

After

Width:  |  Height:  |  Size: 289 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 22v6M13 24l6 2M19 24l-6 2M13 28l6-2M19 28l-6-2"/><path d="M8 19h14a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 13c0 3.3 2.7 6 6 6z"/></g></svg>

After

Width:  |  Height:  |  Size: 304 B

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 20l-3 6h4l-2 6 6-8h-4l2-4z"/><path d="M8 18h12a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 12c0 3.3 2.7 6 6 6z"/></g></svg>

After

Width:  |  Height:  |  Size: 284 B

Some files were not shown because too many files have changed in this diff Show More