…ring, linking)
Read side:
- (user)/publications/[id]: detail page with inline PDF + YouTube and download
cards for other file types; Explore listing at /publications; 'Resources'
entry in the Explore nav.
- Unified search: publication type + detail redirect.
Authoring (dashboard):
- publications list + Create; create/edit shell (Metadata / Content / Publish
tabs) with a shared typed metadata form (title, abstract, authors, date,
license, Resource Type, sectors, geographies, external link — a normal form,
not the dynamic-metadata renderer); block editor (YouTube + file dropzone,
reorder, remove); publish toggle + 'linked to N' flag.
- Resources sidebar entry on the dashboard.
Linking:
- PublicationLinkPicker embedded in the Use Case & Collaborative assign pages
(published resources only).
Infra: single RESOURCE_LABEL constant (UI says 'Resource', code says
publication); codegen documents glob widened to include components/. Verified:
codegen + tsc (zero new errors) + eslint clean.
Resources (internal name Publication) — frontend
The UI for the new Resource entity. Users only see "Resource" (single source: lib/constants/resourceLabel.ts); the code and API use Publication.
What's included
Read side
Authoring (dashboard)
Linking
Infra
Test plan
Reviewer notes
Docs: app/[locale]/(user)/publications/architecture.md (FE slice, links the backend doc).
🤖 Generated with Claude Code