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:
@@ -52,7 +52,7 @@ export default function DocsPremiumPage() {
|
||||
<tr><td>Encrypted credential storage</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>Security Center & audit logging</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>AI Intent Router & MCP Server</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>JavaScript SDK (39 methods)</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>REST API & MCP Server</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>Backup / restore & Disaster Recovery</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>Internationalization (5 languages)</td><td>✓</td><td>✓</td></tr>
|
||||
<tr><td>Plugin & 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 |
@@ -109,12 +109,12 @@ export default function FeaturesPage() {
|
||||
id: 'developer-platform',
|
||||
title: 'Developer Platform',
|
||||
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: '🛠️',
|
||||
features: [
|
||||
{ icon: '📘', label: 'JavaScript SDK + TypeScript types (39 methods)' },
|
||||
{ icon: '🌐', label: 'REST API (JSON, MCP protocol)' },
|
||||
{ icon: '🔌', label: 'Plugin / Extension system' },
|
||||
{ icon: '🌐', label: 'REST API' },
|
||||
{ icon: '🔄', label: 'Auto-update manager' },
|
||||
{ icon: '🌍', label: 'i18n: EN/ES/FR/DE/AR (RTL)' },
|
||||
],
|
||||
},
|
||||
|
||||
+2
-2
@@ -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="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>
|
||||
<h3 className="text-sm font-semibold text-surface-50">JavaScript SDK</h3>
|
||||
<p className="text-xs text-surface-400 mt-1">39 methods, zero-dep</p>
|
||||
<h3 className="text-sm font-semibold text-surface-50">REST API</h3>
|
||||
<p className="text-xs text-surface-400 mt-1">Full JSON API</p>
|
||||
</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="text-3xl mb-2">📊</div>
|
||||
|
||||
@@ -50,7 +50,7 @@ export default function PricingPage() {
|
||||
'Audit logging & encrypted credential vault',
|
||||
'One-click backup & disaster recovery',
|
||||
'Plugin/extension system',
|
||||
'JavaScript SDK + TypeScript types (39 methods)',
|
||||
'REST API & MCP Server for AI assistants',
|
||||
'Prometheus metrics export',
|
||||
'i18n — 5 languages (EN/ES/FR/DE/AR)',
|
||||
];
|
||||
|
||||
@@ -9,110 +9,133 @@ interface App {
|
||||
}
|
||||
|
||||
// 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[] = [
|
||||
// Media
|
||||
{ name: 'Plex', icon: '🎬', category: 'Media' },
|
||||
{ name: 'Jellyfin', icon: '🍿', category: 'Media' },
|
||||
{ name: 'Emby', icon: '🎥', category: 'Media' },
|
||||
{ name: 'Airsonic', icon: '🎵', category: 'Media' },
|
||||
{ name: 'Navidrome', icon: '🎶', category: 'Media' },
|
||||
{ name: 'Airsonic Advanced', 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: 'Komga', icon: '📚', category: 'Media' },
|
||||
{ name: 'Kavita', icon: '📖', category: 'Media' },
|
||||
{ name: 'Subsonic', icon: '🎵', category: 'Media' },
|
||||
|
||||
// Media Management
|
||||
{ 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: 'Readarr', icon: '📚', category: 'Media Mgmt' },
|
||||
{ name: 'Prowlarr', 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' },
|
||||
|
||||
// Downloads
|
||||
{ name: 'qBittorrent', icon: '⚡', category: 'Downloads' },
|
||||
{ name: 'Transmission', icon: '📤', category: 'Downloads' },
|
||||
{ name: 'SABnzbd', icon: '📥', category: 'Downloads' },
|
||||
{ name: 'NZBGet', icon: '📰', category: 'Downloads' },
|
||||
{ name: 'JDownloader', icon: '⬇️', category: 'Downloads' },
|
||||
{ name: 'qBittorrent', icon: '⬇️', category: 'Downloads' },
|
||||
{ name: 'SABnzbd', icon: '📰', category: 'Downloads' },
|
||||
{ name: 'NZBGet', icon: '📥', category: 'Downloads' },
|
||||
{ name: 'Transmission', icon: '🌊', category: 'Downloads' },
|
||||
{ name: 'JDownloader 2', icon: '⬇️', category: 'Downloads' },
|
||||
|
||||
// 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: 'Paperless-NGX', icon: '📄', category: 'Productivity' },
|
||||
{ name: 'Stirling-PDF', icon: '📃', category: 'Productivity' },
|
||||
{ name: 'Standard Notes', icon: '🔒', category: 'Productivity' },
|
||||
{ name: 'Actual Budget', icon: '💰', category: 'Productivity' },
|
||||
{ name: 'Mealie', icon: '🍳', category: 'Productivity' },
|
||||
{ name: 'Standard Notes', icon: '🗒️', category: 'Productivity' },
|
||||
{ name: 'Trilium', icon: '🌳', category: 'Productivity' },
|
||||
{ name: 'Excalidraw', icon: '✏️', category: 'Productivity' },
|
||||
{ name: 'Paperless-ngx', icon: '📚', category: 'Productivity' },
|
||||
{ name: 'Trilium Notes', 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
|
||||
{ name: 'Portainer', icon: '🐋', category: 'Management' },
|
||||
{ name: 'Watchtower', icon: '🗼', category: 'Management' },
|
||||
// Photos
|
||||
{ name: 'Immich', icon: '📸', category: 'Photos' },
|
||||
{ name: 'PhotoPrism', icon: '🖼️', category: 'Photos' },
|
||||
|
||||
// Files & Sync
|
||||
// Files
|
||||
{ name: 'FileBrowser', 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
|
||||
{ name: 'Vaultwarden', icon: '🔐', category: 'Security' },
|
||||
{ name: 'Authentik', icon: '🪪', category: 'Security' },
|
||||
{ name: 'Vaultwarden', icon: '🔑', category: 'Security' },
|
||||
{ name: 'DashCA', icon: '🔐', category: 'Security' },
|
||||
{ name: 'Authentik', 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
|
||||
{ name: 'Gitea', icon: '🐙', category: 'Development' },
|
||||
{ name: 'Jenkins', icon: '🤖', category: 'Development' },
|
||||
{ name: 'Drone CI', icon: '🚁', category: 'Development' },
|
||||
{ name: 'Code Server', icon: '💻', category: 'Development' },
|
||||
{ name: 'VS Code Server', icon: '💻', category: 'Development' },
|
||||
{ name: 'Gitea', icon: '🦊', category: 'Development' },
|
||||
{ name: 'Jenkins', icon: '🔧', category: 'Development' },
|
||||
{ name: 'Drone CI', icon: '🐝', category: 'Development' },
|
||||
{ name: 'Forgejo', icon: '🔧', category: 'Development' },
|
||||
{ name: 'GitLab', icon: '🦚', category: 'Development' },
|
||||
|
||||
// Monitoring
|
||||
{ name: 'Grafana', icon: '📊', category: 'Monitoring' },
|
||||
{ name: 'Uptime Kuma', icon: '📈', category: 'Monitoring' },
|
||||
{ name: 'Dozzle', icon: '🔍', category: 'Monitoring' },
|
||||
{ name: 'Speedtest', icon: '⚡', category: 'Monitoring' },
|
||||
{ name: 'Speedtest Tracker', 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
|
||||
{ name: 'Home Assistant', icon: '🏡', category: 'Smart Home' },
|
||||
{ name: 'Node-RED', icon: '🔴', category: 'Smart Home' },
|
||||
// Networking
|
||||
{ name: 'Pi-hole', icon: '🛡️', category: 'Networking' },
|
||||
{ name: 'WireGuard VPN', icon: '🔒', category: 'Networking' },
|
||||
|
||||
// DNS & Network
|
||||
{ name: 'Pi-hole', icon: '🕳️', category: 'Network' },
|
||||
{ name: 'Technitium', icon: '🌐', category: 'Network' },
|
||||
{ name: 'BIND9', icon: '🔗', category: 'Network' },
|
||||
{ name: 'CoreDNS', icon: '🔶', category: 'Network' },
|
||||
{ name: 'PowerDNS', icon: '⚡', category: 'Network' },
|
||||
// DNS
|
||||
{ name: 'Technitium DNS Server', icon: '🌐', category: 'DNS' },
|
||||
{ name: 'BIND9 DNS Server', icon: '🔧', category: 'DNS' },
|
||||
{ name: 'PowerDNS', icon: '⚡', category: 'DNS' },
|
||||
{ name: 'CoreDNS', icon: '☁️', category: 'DNS' },
|
||||
|
||||
// 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: 'Roundcube', icon: '📧', category: 'Communication' },
|
||||
{ name: 'Docker Mailserver', icon: '📬', category: 'Communication' },
|
||||
|
||||
// Database
|
||||
{ name: 'PostgreSQL', icon: '🐘', category: 'Database' },
|
||||
{ name: 'MongoDB', icon: '🍃', category: 'Database' },
|
||||
{ name: 'Redis', icon: '🔴', category: 'Database' },
|
||||
{ name: 'Adminer', icon: '🗂️', category: 'Database' },
|
||||
{ name: 'MongoDB', icon: '🍃', category: 'Database' },
|
||||
{ name: 'Adminer', icon: '🗄️', category: 'Database' },
|
||||
|
||||
// Gaming
|
||||
{ name: 'Minecraft', icon: '⛏️', category: 'Gaming' },
|
||||
{ name: 'Valheim', icon: '⚔️', category: 'Gaming' },
|
||||
{ name: 'Minecraft Server', 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
|
||||
{ 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: '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 = [
|
||||
@@ -121,16 +144,18 @@ const categories = [
|
||||
'Media Mgmt',
|
||||
'Downloads',
|
||||
'Productivity',
|
||||
'Management',
|
||||
'Photos',
|
||||
'Files',
|
||||
'Management',
|
||||
'Security',
|
||||
'Development',
|
||||
'Monitoring',
|
||||
'Smart Home',
|
||||
'Network',
|
||||
'Networking',
|
||||
'DNS',
|
||||
'Communication',
|
||||
'Database',
|
||||
'Gaming',
|
||||
'Home Automation',
|
||||
'Utilities',
|
||||
];
|
||||
|
||||
@@ -148,7 +173,7 @@ export default function AppShowcase() {
|
||||
{/* Header */}
|
||||
<div className="mb-12 text-center">
|
||||
<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>
|
||||
<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.
|
||||
@@ -206,7 +231,7 @@ export default function AppShowcase() {
|
||||
<div className="mt-16 grid grid-cols-3 gap-4 sm:gap-8">
|
||||
<div className="text-center">
|
||||
<div className="text-3xl sm:text-4xl font-bold text-brand-400 mb-2">
|
||||
76+
|
||||
92+
|
||||
</div>
|
||||
<p className="text-sm text-surface-400">App Templates</p>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user