'use client'; import { useState } from 'react'; interface App { name: string; icon: string; category: string; } // All apps below have real deployable templates in DashCaddy. // Verified against src/docker/app-templates.js (93 templates, Aug 2026). const apps: App[] = [ // Media { name: 'Plex', icon: '🎬', category: 'Media' }, { name: 'Jellyfin', icon: '🍿', category: 'Media' }, { name: 'Emby', icon: '🎥', category: 'Media' }, { name: 'Navidrome', icon: '🎶', category: 'Media' }, { name: 'Airsonic Advanced', icon: '🎧', category: 'Media' }, { name: 'Audiobookshelf', 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: 'Prowlarr', icon: '🔍', category: 'Media Mgmt' }, { name: 'Lidarr', icon: '🎵', category: 'Media Mgmt' }, { name: 'Readarr', icon: '📚', category: 'Media Mgmt' }, { name: 'Bazarr', icon: '💬', category: 'Media Mgmt' }, { name: 'Seerr', icon: '🎫', category: 'Media Mgmt' }, { name: 'Tautulli', icon: '📊', category: 'Media Mgmt' }, // 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: 'BookStack', icon: '📖', category: 'Productivity' }, { name: 'Outline', icon: '📝', category: 'Productivity' }, { name: 'Standard Notes', icon: '🔒', category: 'Productivity' }, { name: 'Actual Budget', icon: '💰', category: 'Productivity' }, { name: 'Mealie', icon: '🍳', category: 'Productivity' }, { name: 'Paperless-ngx', icon: '📚', category: 'Productivity' }, { name: 'Trilium Notes', icon: '🗒️', category: 'Productivity' }, { name: 'Excalidraw', icon: '🎨', category: 'Productivity' }, { name: 'HedgeDoc', icon: '📝', category: 'Productivity' }, { name: 'OpenProject', icon: '📋', category: 'Productivity' }, { name: 'Plane', icon: '✈️', category: 'Productivity' }, { name: 'Vikunja', icon: '✅', category: 'Productivity' }, // Photos { name: 'Immich', icon: '📸', category: 'Photos' }, { name: 'PhotoPrism', icon: '🖼️', category: 'Photos' }, // 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: 'DashCA', icon: '🔐', category: 'Security' }, { name: 'Authentik', icon: '🔐', category: 'Security' }, { name: 'CrowdSec', icon: '🛡️', category: 'Security' }, { name: 'Authelia', icon: '🔐', category: 'Security' }, { name: 'Bitwarden', icon: '🔑', category: 'Security' }, { name: 'Keycloak', icon: '🔑', category: 'Security' }, // 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: 'Speedtest Tracker', icon: '⚡', category: 'Monitoring' }, { name: 'Dozzle', icon: '📜', category: 'Monitoring' }, { name: 'Kibana', icon: '📊', category: 'Monitoring' }, { name: 'Netdata', icon: '📈', category: 'Monitoring' }, { name: 'Prometheus', icon: '🔥', category: 'Monitoring' }, // Networking { name: 'Pi-hole', icon: '🛡️', category: 'Networking' }, { name: 'WireGuard VPN', icon: '🔒', category: 'Networking' }, { name: 'OpenVPN', icon: '🔒', category: 'Networking' }, // 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: 'Docker Mailserver', icon: '📧', category: 'Communication' }, { name: 'Roundcube', icon: '💌', category: 'Communication' }, { name: 'Matrix Synapse', icon: '💬', category: 'Communication' }, { name: 'Rocket.Chat', icon: '🚀', category: 'Communication' }, // Database { name: 'PostgreSQL', icon: '🐘', category: 'Database' }, { name: 'Redis', icon: '🔴', category: 'Database' }, { name: 'MongoDB', icon: '🍃', category: 'Database' }, { name: 'Adminer', icon: '🗄️', category: 'Database' }, // 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: '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' }, { name: 'Vintage Stereo', icon: '📻', category: 'Utilities' }, ]; const categories = [ 'All', 'Media', 'Media Mgmt', 'Downloads', 'Productivity', 'Photos', 'Files', 'Management', 'Security', 'Development', 'Monitoring', 'Networking', 'DNS', 'Communication', 'Database', 'Gaming', 'Home Automation', 'Utilities', ]; export default function AppShowcase() { const [activeCategory, setActiveCategory] = useState('All'); const filteredApps = activeCategory === 'All' ? apps : apps.filter((app) => app.category === activeCategory); return (
{/* Header */}

93 One-Click App Templates

Deploy your favorite apps instantly with pre-configured templates, automatic SSL certificates, and integrated DNS management.

{/* Category Filter */}
{categories.map((category) => ( ))}
{/* App Grid */}
{filteredApps.map((app) => (
{/* Background gradient on hover */}
{/* Icon */}
{app.icon}
{/* App Name */}

{app.name}

{/* Category Tag */} {app.category}
))}
{/* Stats */}
93

App Templates

0

Configuration

1-Click

Deploy

); }