APP_TEMPLATES is exported as { plex: {...}, jellyfin: {...}, ... } not an array. All three catalog endpoints now handle both formats.
GET /api/v1/catalog — list all apps with category filter, sort options GET /api/v1/catalog/search?q=plex — search by name/category GET /api/v1/catalog/:appId — get app details (image, ports, env, volumes) Uses existing app-templates.js (38 templates). Auto-categorizes into: media, productivity, development, database, network, smart-home, monitoring. Popular badges for Plex, Jellyfin, Sonarr, Radarr, Nextcloud, Gitea, qBittorrent. Auth required (behind login). 1633 tests pass.