[grade=B] DC-104: App catalog API — browse 38 curated templates
CI / Test & Lint (push) Canceled after 0s
CI / Security audit (push) Canceled after 0s

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.
This commit is contained in:
Hermes
2026-08-12 12:47:50 -07:00
parent f68a5afe73
commit 677fb41f97
2 changed files with 139 additions and 0 deletions
+7
View File
@@ -63,6 +63,7 @@ const shareRoutes = require('../routes/share');
const i18nRoutes = require('../routes/i18n');
const discoverRoutes = require('../routes/discover');
const discoverAdoptRoutes = require('../routes/discover-adopt');
const catalogRoutes = require('../routes/catalog');
const configRoutes = require('../routes/config');
const dnsRoutes = require('../routes/dns');
const notificationRoutes = require('../routes/notifications');
@@ -618,6 +619,12 @@ async function createApp() {
siteConfig: ctx.config,
asyncHandler: ctx.asyncHandler,
}));
// DC-104: App catalog — browse curated templates
apiRouter.use(catalogRoutes({
APP_TEMPLATES: require('./docker/app-templates'),
asyncHandler: ctx.asyncHandler,
}));
apiRouter.use(updatesRoutes({
updateManager: ctx.updateManager,
selfUpdater: ctx.selfUpdater,