Fix: update app count to 92+, remove false SDK claims, fix duplicate feature entry

- AppShowcase: 76+ → 92+ (heading + stats counter)
- page.tsx: JavaScript SDK (39 methods) → REST API (Full JSON API)
- features/page.tsx: SDK → REST API, removed duplicate REST API entry
- premium docs: SDK (39 methods) → REST API & MCP Server
- pricing: SDK → REST API & MCP Server for AI assistants
- favicon updates from branding assets
Deployed live to dashcaddy.net
This commit is contained in:
Krystie
2026-08-13 00:57:00 -07:00
parent 6165b8e464
commit be8953fe3b
7 changed files with 91 additions and 66 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ export default function DocsPremiumPage() {
<tr><td>Encrypted credential storage</td><td></td><td></td></tr> <tr><td>Encrypted credential storage</td><td></td><td></td></tr>
<tr><td>Security Center &amp; audit logging</td><td></td><td></td></tr> <tr><td>Security Center &amp; audit logging</td><td></td><td></td></tr>
<tr><td>AI Intent Router &amp; MCP Server</td><td></td><td></td></tr> <tr><td>AI Intent Router &amp; MCP Server</td><td></td><td></td></tr>
<tr><td>JavaScript SDK (39 methods)</td><td></td><td></td></tr> <tr><td>REST API &amp; MCP Server</td><td></td><td></td></tr>
<tr><td>Backup / restore &amp; Disaster Recovery</td><td></td><td></td></tr> <tr><td>Backup / restore &amp; Disaster Recovery</td><td></td><td></td></tr>
<tr><td>Internationalization (5 languages)</td><td></td><td></td></tr> <tr><td>Internationalization (5 languages)</td><td></td><td></td></tr>
<tr><td>Plugin &amp; extension system</td><td></td><td></td></tr> <tr><td>Plugin &amp; extension system</td><td></td><td></td></tr>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 784 B

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 98 KiB

+3 -3
View File
@@ -109,12 +109,12 @@ export default function FeaturesPage() {
id: 'developer-platform', id: 'developer-platform',
title: 'Developer Platform', title: 'Developer Platform',
description: description:
'DashCaddy isn\'t just a UI—it\'s a platform. A typed JavaScript SDK with 39 methods, a full REST API, a plugin/extension system for custom workflows, and internationalization across 5 languages including full RTL support.', 'DashCaddy isn\'t just a UI—it\'s a platform. A full REST API with JSON endpoints, a plugin/extension system for custom workflows, and internationalization across 5 languages including full RTL support.',
icon: '🛠️', icon: '🛠️',
features: [ features: [
{ icon: '📘', label: 'JavaScript SDK + TypeScript types (39 methods)' }, { icon: '🌐', label: 'REST API (JSON, MCP protocol)' },
{ icon: '🔌', label: 'Plugin / Extension system' }, { icon: '🔌', label: 'Plugin / Extension system' },
{ icon: '🌐', label: 'REST API' }, { icon: '🔄', label: 'Auto-update manager' },
{ icon: '🌍', label: 'i18n: EN/ES/FR/DE/AR (RTL)' }, { icon: '🌍', label: 'i18n: EN/ES/FR/DE/AR (RTL)' },
], ],
}, },
+2 -2
View File
@@ -563,8 +563,8 @@ export default function Home() {
<div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4"> <div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4">
<div className="rounded-lg border border-surface-700/50 bg-surface-800/50 p-5 text-center hover:border-brand-500/50 transition-colors"> <div className="rounded-lg border border-surface-700/50 bg-surface-800/50 p-5 text-center hover:border-brand-500/50 transition-colors">
<div className="text-3xl mb-2">📦</div> <div className="text-3xl mb-2">📦</div>
<h3 className="text-sm font-semibold text-surface-50">JavaScript SDK</h3> <h3 className="text-sm font-semibold text-surface-50">REST API</h3>
<p className="text-xs text-surface-400 mt-1">39 methods, zero-dep</p> <p className="text-xs text-surface-400 mt-1">Full JSON API</p>
</div> </div>
<div className="rounded-lg border border-surface-700/50 bg-surface-800/50 p-5 text-center hover:border-brand-500/50 transition-colors"> <div className="rounded-lg border border-surface-700/50 bg-surface-800/50 p-5 text-center hover:border-brand-500/50 transition-colors">
<div className="text-3xl mb-2">📊</div> <div className="text-3xl mb-2">📊</div>
+1 -1
View File
@@ -50,7 +50,7 @@ export default function PricingPage() {
'Audit logging & encrypted credential vault', 'Audit logging & encrypted credential vault',
'One-click backup & disaster recovery', 'One-click backup & disaster recovery',
'Plugin/extension system', 'Plugin/extension system',
'JavaScript SDK + TypeScript types (39 methods)', 'REST API & MCP Server for AI assistants',
'Prometheus metrics export', 'Prometheus metrics export',
'i18n — 5 languages (EN/ES/FR/DE/AR)', 'i18n — 5 languages (EN/ES/FR/DE/AR)',
]; ];
+84 -59
View File
@@ -9,110 +9,133 @@ interface App {
} }
// All apps below have real deployable templates in DashCaddy. // All apps below have real deployable templates in DashCaddy.
// Verified against src/docker/app-templates.js (76 templates, Aug 2026). // Auto-generated from src/docker/app-templates.js (92 templates, Aug 2026).
const apps: App[] = [ const apps: App[] = [
// Media // Media
{ name: 'Plex', icon: '🎬', category: 'Media' }, { name: 'Plex', icon: '🎬', category: 'Media' },
{ name: 'Jellyfin', icon: '🍿', category: 'Media' }, { name: 'Jellyfin', icon: '🍿', category: 'Media' },
{ name: 'Emby', icon: '🎥', category: 'Media' }, { name: 'Emby', icon: '🎥', category: 'Media' },
{ name: 'Airsonic', icon: '🎵', category: 'Media' },
{ name: 'Navidrome', icon: '🎶', category: 'Media' }, { name: 'Navidrome', icon: '🎶', category: 'Media' },
{ name: 'Airsonic Advanced', icon: '🎧', category: 'Media' },
{ name: 'Audiobookshelf', icon: '🎧', category: 'Media' }, { name: 'Audiobookshelf', icon: '🎧', category: 'Media' },
{ name: 'Immich', icon: '📷', category: 'Photos' },
{ name: 'PhotoPrism', icon: '🖼️', category: 'Photos' },
{ name: 'Komga', icon: '📚', category: 'Media' },
{ name: 'Kavita', icon: '📕', category: 'Media' },
{ name: 'Calibre-Web', icon: '📖', category: 'Media' }, { name: 'Calibre-Web', icon: '📖', category: 'Media' },
{ name: 'Komga', icon: '📚', category: 'Media' },
{ name: 'Kavita', icon: '📖', category: 'Media' },
{ name: 'Subsonic', icon: '🎵', category: 'Media' },
// Media Management // Media Management
{ name: 'Sonarr', icon: '📺', category: 'Media Mgmt' }, { name: 'Sonarr', icon: '📺', category: 'Media Mgmt' },
{ name: 'Radarr', icon: '🎬', category: 'Media Mgmt' }, { name: 'Radarr', icon: '🎭', category: 'Media Mgmt' },
{ name: 'Prowlarr', icon: '🔍', category: 'Media Mgmt' },
{ name: 'Lidarr', icon: '🎵', category: 'Media Mgmt' }, { name: 'Lidarr', icon: '🎵', category: 'Media Mgmt' },
{ name: 'Readarr', icon: '📚', category: 'Media Mgmt' }, { name: 'Readarr', icon: '📚', category: 'Media Mgmt' },
{ name: 'Prowlarr', icon: '🔍', category: 'Media Mgmt' },
{ name: 'Bazarr', icon: '💬', category: 'Media Mgmt' }, { name: 'Bazarr', icon: '💬', category: 'Media Mgmt' },
{ name: 'Jellyseerr', icon: '🎯', category: 'Media Mgmt' }, { name: 'Seerr', icon: '🎫', category: 'Media Mgmt' },
{ name: 'Tautulli', icon: '📊', category: 'Media Mgmt' }, { name: 'Tautulli', icon: '📊', category: 'Media Mgmt' },
// Downloads // Downloads
{ name: 'qBittorrent', icon: '', category: 'Downloads' }, { name: 'qBittorrent', icon: '⬇️', category: 'Downloads' },
{ name: 'Transmission', icon: '📤', category: 'Downloads' }, { name: 'SABnzbd', icon: '📰', category: 'Downloads' },
{ name: 'SABnzbd', icon: '📥', category: 'Downloads' }, { name: 'NZBGet', icon: '📥', category: 'Downloads' },
{ name: 'NZBGet', icon: '📰', category: 'Downloads' }, { name: 'Transmission', icon: '🌊', category: 'Downloads' },
{ name: 'JDownloader', icon: '⬇️', category: 'Downloads' }, { name: 'JDownloader 2', icon: '⬇️', category: 'Downloads' },
// Productivity // Productivity
{ name: 'Nextcloud', icon: '☁️', category: 'Productivity' }, { name: 'Nextcloud', icon: '☁️', category: 'Productivity' },
{ name: 'Actual Budget', icon: '💰', category: 'Productivity' }, { name: 'BookStack', icon: '📖', category: 'Productivity' },
{ name: 'BookStack', icon: '📒', category: 'Productivity' },
{ name: 'Outline', icon: '📝', category: 'Productivity' }, { name: 'Outline', icon: '📝', category: 'Productivity' },
{ name: 'Paperless-NGX', icon: '📄', category: 'Productivity' }, { name: 'Standard Notes', icon: '🔒', category: 'Productivity' },
{ name: 'Stirling-PDF', icon: '📃', category: 'Productivity' }, { name: 'Actual Budget', icon: '💰', category: 'Productivity' },
{ name: 'Mealie', icon: '🍳', category: 'Productivity' }, { name: 'Mealie', icon: '🍳', category: 'Productivity' },
{ name: 'Standard Notes', icon: '🗒️', category: 'Productivity' }, { name: 'Paperless-ngx', icon: '📚', category: 'Productivity' },
{ name: 'Trilium', icon: '🌳', category: 'Productivity' }, { name: 'Trilium Notes', icon: '🗒️', category: 'Productivity' },
{ name: 'Excalidraw', icon: '✏️', category: 'Productivity' }, { name: 'Excalidraw', icon: '🎨', category: 'Productivity' },
{ name: 'Vikunja', icon: '✅', category: 'Productivity' },
{ name: 'OpenProject', icon: '📋', category: 'Productivity' },
{ name: 'Plane', icon: '✈️', category: 'Productivity' },
{ name: 'HedgeDoc', icon: '📝', category: 'Productivity' },
// Management // Photos
{ name: 'Portainer', icon: '🐋', category: 'Management' }, { name: 'Immich', icon: '📸', category: 'Photos' },
{ name: 'Watchtower', icon: '🗼', category: 'Management' }, { name: 'PhotoPrism', icon: '🖼️', category: 'Photos' },
// Files & Sync // Files
{ name: 'FileBrowser', icon: '📁', category: 'Files' }, { name: 'FileBrowser', icon: '📁', category: 'Files' },
{ name: 'Syncthing', icon: '🔄', category: 'Files' }, { name: 'Syncthing', icon: '🔄', category: 'Files' },
{ name: 'Sami Files', icon: '📂', category: 'Files' },
// Management
{ name: 'Portainer', icon: '🐳', category: 'Management' },
{ name: 'Watchtower', icon: '👓', category: 'Management' },
{ name: 'Yacht', icon: '⛵', category: 'Management' },
// Security // Security
{ name: 'Vaultwarden', icon: '🔐', category: 'Security' }, { name: 'Vaultwarden', icon: '🔑', category: 'Security' },
{ name: 'Authentik', icon: '🪪', category: 'Security' }, { name: 'DashCA', icon: '🔐', category: 'Security' },
{ name: 'Authentik', icon: '🔐', category: 'Security' },
{ name: 'CrowdSec', icon: '🛡️', category: 'Security' }, { name: 'CrowdSec', icon: '🛡️', category: 'Security' },
{ name: 'WireGuard', icon: '📡', category: 'Security' }, { name: 'Authelia', icon: '🛡️', category: 'Security' },
{ name: 'Keycloak', icon: '🔑', category: 'Security' },
{ name: 'OpenVPN', icon: '🔒', category: 'Security' },
{ name: 'Bitwarden', icon: '🔐', category: 'Security' },
// Development // Development
{ name: 'Gitea', icon: '🐙', category: 'Development' }, { name: 'VS Code Server', icon: '💻', category: 'Development' },
{ name: 'Jenkins', icon: '🤖', category: 'Development' }, { name: 'Gitea', icon: '🦊', category: 'Development' },
{ name: 'Drone CI', icon: '🚁', category: 'Development' }, { name: 'Jenkins', icon: '🔧', category: 'Development' },
{ name: 'Code Server', icon: '💻', category: 'Development' }, { name: 'Drone CI', icon: '🐝', category: 'Development' },
{ name: 'Forgejo', icon: '🔧', category: 'Development' },
{ name: 'GitLab', icon: '🦚', category: 'Development' },
// Monitoring // Monitoring
{ name: 'Grafana', icon: '📊', category: 'Monitoring' }, { name: 'Grafana', icon: '📊', category: 'Monitoring' },
{ name: 'Uptime Kuma', icon: '📈', category: 'Monitoring' }, { name: 'Uptime Kuma', icon: '📈', category: 'Monitoring' },
{ name: 'Dozzle', icon: '🔍', category: 'Monitoring' }, { name: 'Speedtest Tracker', icon: '', category: 'Monitoring' },
{ name: 'Speedtest', icon: '', category: 'Monitoring' }, { name: 'Dozzle', icon: '📜', category: 'Monitoring' },
{ name: 'Prometheus', icon: '🔥', category: 'Monitoring' },
{ name: 'Netdata', icon: '📈', category: 'Monitoring' },
{ name: 'Kibana', icon: '📉', category: 'Monitoring' },
// Smart Home // Networking
{ name: 'Home Assistant', icon: '🏡', category: 'Smart Home' }, { name: 'Pi-hole', icon: '🛡️', category: 'Networking' },
{ name: 'Node-RED', icon: '🔴', category: 'Smart Home' }, { name: 'WireGuard VPN', icon: '🔒', category: 'Networking' },
// DNS & Network // DNS
{ name: 'Pi-hole', icon: '🕳️', category: 'Network' }, { name: 'Technitium DNS Server', icon: '🌐', category: 'DNS' },
{ name: 'Technitium', icon: '🌐', category: 'Network' }, { name: 'BIND9 DNS Server', icon: '🔧', category: 'DNS' },
{ name: 'BIND9', icon: '🔗', category: 'Network' }, { name: 'PowerDNS', icon: '', category: 'DNS' },
{ name: 'CoreDNS', icon: '🔶', category: 'Network' }, { name: 'CoreDNS', icon: '☁️', category: 'DNS' },
{ name: 'PowerDNS', icon: '⚡', category: 'Network' },
// Communication // Communication
{ name: 'Matrix', icon: '💬', category: 'Communication' }, { name: 'Docker Mailserver', icon: '📧', category: 'Communication' },
{ name: 'Roundcube', icon: '💌', category: 'Communication' },
{ name: 'Matrix Synapse', icon: '💬', category: 'Communication' },
{ name: 'Rocket.Chat', icon: '🚀', category: 'Communication' }, { name: 'Rocket.Chat', icon: '🚀', category: 'Communication' },
{ name: 'Roundcube', icon: '📧', category: 'Communication' },
{ name: 'Docker Mailserver', icon: '📬', category: 'Communication' },
// Database // Database
{ name: 'PostgreSQL', icon: '🐘', category: 'Database' }, { name: 'PostgreSQL', icon: '🐘', category: 'Database' },
{ name: 'MongoDB', icon: '🍃', category: 'Database' },
{ name: 'Redis', icon: '🔴', category: 'Database' }, { name: 'Redis', icon: '🔴', category: 'Database' },
{ name: 'Adminer', icon: '🗂️', category: 'Database' }, { name: 'MongoDB', icon: '🍃', category: 'Database' },
{ name: 'Adminer', icon: '🗄️', category: 'Database' },
// Gaming // Gaming
{ name: 'Minecraft', icon: '⛏️', category: 'Gaming' }, { name: 'Minecraft Server', icon: '⛏️', category: 'Gaming' },
{ name: 'Valheim', icon: '⚔️', category: 'Gaming' }, { name: 'Valheim Server', icon: '⚔️', category: 'Gaming' },
// Home Automation
{ name: 'Home Assistant', icon: '🏠', category: 'Home Automation' },
{ name: 'Node-RED', icon: '🔴', category: 'Home Automation' },
{ name: 'OpenHAB', icon: '⚙️', category: 'Home Automation' },
// Utilities // Utilities
{ name: 'IT-Tools', icon: '🛠️', category: 'Utilities' },
{ name: 'Changedetection', icon: '🔔', category: 'Utilities' },
{ name: 'Homarr', icon: '🏠', category: 'Utilities' },
{ name: 'Homepage', icon: '📄', category: 'Utilities' },
{ name: 'Weather', icon: '🌤️', category: 'Utilities' }, { name: 'Weather', icon: '🌤️', category: 'Utilities' },
{ name: 'Digital Clock', icon: '🕐', category: 'Utilities' }, { name: 'Digital Clock', icon: '🕐', category: 'Utilities' },
{ name: 'Homepage', icon: '🏡', category: 'Utilities' },
{ name: 'Homarr', icon: '🎯', category: 'Utilities' },
{ name: 'Change Detection', icon: '👁️', category: 'Utilities' },
{ name: 'Whoami', icon: '🔍', category: 'Utilities' },
{ name: 'Stirling PDF', icon: '📄', category: 'Utilities' },
{ name: 'IT Tools', icon: '🧰', category: 'Utilities' },
]; ];
const categories = [ const categories = [
@@ -121,16 +144,18 @@ const categories = [
'Media Mgmt', 'Media Mgmt',
'Downloads', 'Downloads',
'Productivity', 'Productivity',
'Management', 'Photos',
'Files', 'Files',
'Management',
'Security', 'Security',
'Development', 'Development',
'Monitoring', 'Monitoring',
'Smart Home', 'Networking',
'Network', 'DNS',
'Communication', 'Communication',
'Database', 'Database',
'Gaming', 'Gaming',
'Home Automation',
'Utilities', 'Utilities',
]; ];
@@ -148,7 +173,7 @@ export default function AppShowcase() {
{/* Header */} {/* Header */}
<div className="mb-12 text-center"> <div className="mb-12 text-center">
<h2 className="text-3xl sm:text-4xl font-bold text-surface-50 mb-4"> <h2 className="text-3xl sm:text-4xl font-bold text-surface-50 mb-4">
76+ One-Click App Templates 92+ One-Click App Templates
</h2> </h2>
<p className="text-lg text-surface-400 max-w-2xl mx-auto"> <p className="text-lg text-surface-400 max-w-2xl mx-auto">
Deploy your favorite apps instantly with pre-configured templates, automatic SSL certificates, and integrated DNS management. Deploy your favorite apps instantly with pre-configured templates, automatic SSL certificates, and integrated DNS management.
@@ -206,7 +231,7 @@ export default function AppShowcase() {
<div className="mt-16 grid grid-cols-3 gap-4 sm:gap-8"> <div className="mt-16 grid grid-cols-3 gap-4 sm:gap-8">
<div className="text-center"> <div className="text-center">
<div className="text-3xl sm:text-4xl font-bold text-brand-400 mb-2"> <div className="text-3xl sm:text-4xl font-bold text-brand-400 mb-2">
76+ 92+
</div> </div>
<p className="text-sm text-surface-400">App Templates</p> <p className="text-sm text-surface-400">App Templates</p>
</div> </div>