Overview
The catalog system manages the public-facing collection of entries. Thedex catalog command provides tools for:
- Manifest management: Add, edit, retire, and remove catalog entries
- Staging: Preview changes before committing
- Validation: Ensure linkage integrity and schema compliance
- Publishing: Deploy catalog updates to test and production
Catalog File Structure
Manifest Operations
The manifest tracks which entries appear in the public catalog.List Manifest Entries
View staged entries:Add Entry to Manifest
Verify linkage
Dex will validate that:
- Entry page exists in
entries/<slug>/ - Entry has valid
entry.jsonandindex.html - Lookup number is unique
Edit Manifest Entry
Update existing manifest metadata:--lookup: Lookup number--season: Season identifier (e.g.,S2)--instrument: Primary instrument--performer: Performer name--status:draft,active, orarchived--title: Override title
Retire Entry
Mark an entry as archived (safe operation):status: "archived" without removing linkage.
Remove Entry
Safe removal (fails if entry page exists):Staging Workflow
Stage from Catalog Entries
Quickly stage an entry fromcatalog.entries.json:
- Looks up metadata in
catalog.entries.json - Validates entry page linkage
- Adds to staged manifest with status
active
Spotlight Management
Set the catalog spotlight (featured entry):Validation
Validate the catalog before publishing:- ✅ Schema compliance: All manifest rows match schema
- ✅ Linkage integrity: All entries have valid page files
- ✅ Spotlight consistency: Spotlight entry exists in manifest
- ✅ Home featured cross-check: Featured entries exist in manifest
- ✅ Snapshot generation: Creates local snapshot for comparison
Validation Errors
Spotlight entry not staged
Spotlight entry not staged
Warning:Solution:
Add the spotlight entry to the manifest:
Home featured entry missing
Home featured entry missing
Warning:Solution:
Either:
- Add the entry to the catalog manifest
- Remove it from home featured:
dex home featured set --entries entry-123,entry-125
Entry page not found
Entry page not found
Error:Solution:
Ensure the entry was created:
Diff and Publishing
Compare Local vs Remote
Before publishing, check differences: Test environment:+2: 2 entries added-0: 0 entries removed~1: 1 entry changed
Publish to Test
Publish to Production
Pull Remote Catalog
Pull the current remote catalog to local (overwritescatalog.editorial.json):
From test:
Season Management
Manage catalog seasons (groupings of entries):List Seasons
Get Season Details
Set Season Metadata
Season Teaser Mode
Hide unreleased entries with teasers: Enable teaser:Custom API Endpoints
Override default API base and tokens:TUI Catalog Manager
For interactive management, use the dashboard:m: Toggle full/staged rows viewa: Stage manifest entrys: Set spotlightv: Validate + snapshotd/f: Diff test/prodp: Publish to testo: Publish to prod (requires typed confirmation)l/k: Pull test/prodr: ReloadEsc: Back to dashboard
Troubleshooting
Admin token auth failure
Admin token auth failure
Error:Solution:
- Confirm you’re using the correct env (
testvsprod) - Export the correct token:
- Verify the secret exists in Worker environment (Wrangler)
Manifest entry not found
Manifest entry not found
Error:Solution:
The entry doesn’t exist in the staged manifest. Add it first:
Resolvable entry_id required
Resolvable entry_id required
Error:Solution:
Provide a valid entry identifier:Or ensure the entry exists in
catalog.entries.json.Best Practices
Always Validate First
Run
dex catalog validate before every publish operationUse Dry Run
Test with
--dry-run before publishing to productionDiff Before Publish
Always run
dex catalog diff --env prod to review changesRetire vs Remove
Prefer
retire over remove to preserve historical linkage