Skip to main content
Buy tickets
UXDB

Publication standards

Collection-level publication criteria (what each entity type needs) are defined once in _data/uxdb_publication_criteria.yml. The UXDB Pro hub and every collection’s Not up to standard reminder pull that same list. Purpose and privacy live on About UXDB.

This page keeps operator and editorial-process notes that are not shown on the hub, plus Pro presentation standards such as basic list, and reprints the shared criteria below so operators can read them without opening Pro.

Session editorial quality standard

The versioned standard is session-editorial-quality-v2. A session passes only when all of the hub’s session criteria are supported by a reviewed source.

A URL or populated field alone cannot establish editorial quality. Reviews live in uxdb/reports/editorial-verification.json and are bound to the reviewed content by a hash. Changes to that content invalidate the review. Source word counts record the length of the description or other source material actually reviewed; they are not estimates or the length of site navigation.

On 23 September 2026 the launch policy removed the mandatory speaker link and speaker-identity assertion. Existing v2 reviews retain their content hashes and remain usable when all remaining checks pass. Speaker presence and the original four presence checks remain visible as meets_completeness for comparison. meets_standards now requires the editorial checks as well. A source may support a useful description without supporting a method connection; keep that record failing the method check rather than inventing a connection. These audit results remain separate from the public-export inclusion rules on the hub.

Every operator record type supports last_checked_against_standards, a UTC ISO datetime recording an actual evaluation against its then-current standards. Missing or null means not yet evaluated. Passing and failing records are both checked; unrelated records must not be stamped. This is distinct from source verification (last_checked) and editing (updated_at). Running an audit does not assert that new source research took place.

Run npm run uxdb:audit-standards to generate the full session report and compact summary in uxdb/reports/, with a standards version and audit time. Run node uxdb/scripts/audit-release-readiness.mjs --write to measure unique eligible public pages against the release targets and stamp accepted (true/false) onto each row in uxdb/data/sessions.json and uxdb/data/methods.json. The Pro hub counts those stamps in the browser the same way it counts other collections. The release report excludes duplicate sessions and non-talk types even when their editorial checks pass.

Basic list (UXDB Pro presentation)

Basic list is the List option for presenting entity lists in UXDB Pro (Table is the default view), with Sessions (/uxdbpro/sessions/) as the original reference. It applies across the Pro collection pages, including People, Sessions, Events, Podcasts (with episodes nested under each series), Series, Sponsorships, Methods, Tools, Organizations, Books, Academic papers, Academic courses, and Artefacts.

Use a plain HTML list (ul / li), one line per item. Do not use card grids or multi-column list rows for this pattern.

Reading order for a collection line (session example):

Metrics Driven Design by Joshua Porter, UX London 2010, tag, talk

For an episode, the same reading order is Episode title by host/speaker, podcast, year, tag pill.

Where:

Part Treatment
Title Bold (heavier than other links — font-weight 800), linked to the session detail page
Speaker Linked to the person page (normal weight)
Event Linked to the event page (normal weight)
Year Plain text
Type Plain text (e.g. talk) when called out as running copy
Tag Displayed as a little grey pill (small rounded badge, grey background; pale AA-compliant text; pill box vertically centered on the line) — typically the session type label

This is the basic list standard for UXDB Pro lists. Apply the same one-line, linked-names, grey-pill-tag approach when other Pro collection lists adopt basic list.

Every collection list also offers a View control (List / Cards / Table). Table is the default. List matches basic list. Cards matches the public Methods card grid. Table shows the same filtered rows in a sortable data table (click a column heading to sort; click again to reverse). The choice is per collection, stored in localStorage, and mirrored in the URL as ?view=list or ?view=cards (omitted for table). The Filter defaults to Not up to standard, which shows that collection’s publication standards above the results.

Implementation reference: _layouts/db.html collection renderers plus Cards via UxdbProLayoutView.cardHtml. Shared List/Cards/Table helper: _includes/uxdbpro-layout-view.js.

Collection publication criteria

Same lists as the Pro hub and collection filter reminders. Edit _data/uxdb_publication_criteria.yml only.

Sessions

Editorial reviews use the versioned standard session-editorial-quality-v2 and live in uxdb/reports/editorial-verification.json, bound to content by hash. Run npm run uxdb:audit-standards for the session standards report (non-blank description, resolving speaker link, non-blank topic, resolving method link). That audit does not change public-export eligibility. npm run uxdb:audit-videos fails when the same video id is on more than one event_id, or a _sessions video_id is attached to a non-Brighton event; npm run uxdb:public runs that video audit before export. Optional last_checked_against_standards on operator records is distinct from last_checked and updated_at.

Methods

Artefacts

Tools

People

Events

Event series

A description is not required for event series.

Podcasts

Podcast episodes

Books

The books data model uses the snake_case field ux_related. This is a classification field, not a requirement that every published book be UX-related: general books can meet the standard when they are explicitly marked false. Either value is accepted; the field must be present and must not be null or omitted. Artefacts are not required for a book to meet the standard. When a book does describe UX artefacts, link them with artefact_ids drawn from the UX artefacts controlled vocabulary (uxdb/data/artefacts.json, operator list at /uxdbpro/artefacts/) rather than free-text artefact labels.

Academic papers

Academic courses

Organizations

Sponsorships

Public launch thresholds (Learning collections)

These thresholds match the UXDB Pro hub targets. A collection section goes public only when at least this many items meet the publication standard (seed catalogue rows alone are not enough):

Collection Public target Notes
Books 50 Hub BOOK_PUBLIC_TARGET
Academic papers 50 Hub PAPER_PUBLIC_TARGET
Academic courses 50 Hub COURSE_PUBLIC_TARGET. Closely related to UX / IxD / human factors / HCI. International catalogue (country dropdown and regional subdivisions on the Academic Courses page).

Live progress rings remain on the UXDB Pro hub. Criteria lists come from _data/uxdb_publication_criteria.yml.

Collection cross-references

The matrix below is the target set of collection-to-collection mentions and links for UXDB Pro detail/record pages. A tick means a page for the row collection should mention or list related items from the column collection when that relationship exists. Diagonal ticks mean related items of the same type (for example related methods, competing tools, sibling series). This matrix is aspirational editorial guidance for a rich Pro experience; it is not limited to fields already populated in uxdb/data/*.json. People is the Pro name for the speakers data collection, Organizations uses the Pro companies collection, and Sponsorships uses sponsors.json.

Collection Sessions Methods Tools Artefacts People Events Series Podcasts Episodes Books Academic papers Academic courses Organizations Sponsorships
Sessions   ✓ ✓ ✓ ✓ ✓ ✓     ✓ ✓ ✓ ✓  
Methods ✓ ✓ ✓ ✓ ✓       ✓ ✓ ✓ ✓ ✓  
Tools ✓ ✓ ✓ ✓ ✓       ✓ ✓   ✓ ✓  
Artefacts ✓ ✓ ✓ ✓ ✓         ✓        
People ✓ ✓ ✓   ✓ ✓   ✓ ✓ ✓ ✓ ✓ ✓  
Events ✓       ✓ ✓ ✓ ✓   ✓ ✓   ✓ ✓
Series   ✓     ✓ ✓ ✓           ✓  
Podcasts ✓ ✓     ✓ ✓     ✓ ✓     ✓  
Episodes ✓ ✓ ✓ ✓ ✓ ✓   ✓   ✓ ✓ ✓ ✓  
Books ✓ ✓ ✓ ✓ ✓       ✓ ✓ ✓ ✓ ✓  
Academic papers ✓ ✓ ✓ ✓ ✓       ✓ ✓ ✓ ✓ ✓  
Academic courses ✓ ✓ ✓ ✓ ✓ ✓       ✓ ✓ ✓ ✓  
Organizations ✓   ✓   ✓ ✓   ✓       ✓ ✓ ✓
Sponsorships ✓         ✓             ✓ ✓

Detail pages should only show a section when there is at least one real linked item. Empty relationships stay hidden rather than showing empty lists.

URL design (UXDB Pro)

Three rules apply to every UXDB Pro collection and entity URL.

No repeated path segment

The collection folder appears once, then the entity slug — never the collection name twice.

Hash deep links follow the same idea: do not put the collection name in the hash when the path already names that collection (prefer a real path segment for the slug instead).

No redundant type prefix in detail slugs

On detail pages, do not prefix the entity slug with a type marker when the parent collection path already establishes the type.

Internal data ids may still use those prefixes in JSON; public and Pro path slugs should be context-clean.

Human-readable slug + immutable ID

Every entity URL has two parts in the final path segment:

  1. A human-readable slug (may change or be ignored without breaking resolution)
  2. An immutable identifier suffix that is the stable id for lookup

Example: /uxdbpro/podcasts/ux-podcast-ab675 — ux-podcast is readable; ab675 is the immutable id fragment. Together with the collection folder (and without a repeated segment or a redundant pod- / ep- type prefix), that is the canonical detail shape for all entity types in UXDB.

Podcasts and episodes (nested paths only)

This rule applies only to podcasts and podcast episodes — not to other collections.

Episodes are not a flat top-level collection. An episode URL lives under its podcast’s folder.

Notes:

The Pro list of podcast series remains /uxdbpro/podcasts/. Series and episode detail use the nested /uxdbpro/podcast/… tree above.

Corrections

Email [email protected] if a published page should change. See also About UXDB.