# =====================================================================
# 📁 PROJECTS COLLECTION — Clean, compressed, and well-documented
# =====================================================================
# This YAML is optimized for:
# • clear sectioning + neat comments
# =====================================================================
# ---------------------------------------------------------------
# FIELDS — Main schema for all project entries
# ---------------------------------------------------------------
# --- Basic identifiers ----------------------------------------------------
- { name: title, label: Project title, type: string, required: true }
- { name: short_title, label: Short title, type: string, required: true }
label: Slug (used for filename/URL)
pattern: { regex: "^[a-z0-9]+(?:-[a-z0-9]+)*$", message: "use-kebab-case" }
- { name: thumbnail, label: Grid thumbnail, type: image, required: true }
# --- Client info block ----------------------------------------------------
label: Client / Project Leader
label: Select from Clients
fetch: { url: https://www.uncharted-limbo.com/api/notion/clients, method: GET, results: items, cache: false }
Client / Commissioned By / Produced By / Presented By /
Supported By / In Collaboration With / Initiated By
values: ["Client","Commissioned By","Produced By","Presented By",
"Supported By","In Collaboration With","Initiated By"]
# --- Collaborators block -------------------------------------------------
options: { multiple: true }
- name: collaborator_info
label: Select from Collaborators
fetch: { url: https://www.uncharted-limbo.com/api/notion/collaborators, method: GET, results: items, cache: false }
- { name: role, label: Role in Project, type: text }
# --- Metadata ------------------------------------------------------------
- { name: date, label: Date, type: date, options: { format: dd-MM-yyyy, min: 2020-09-01 } }
- { name: summary, label: Short summary, type: text }
- { name: body, label: Case study body, type: rich-text }
- { name: tag, label: Tags, type: string }
# --- Media ---------------------------------------------------------------
options: { multiple: { max: 16 } }
- { name: videos, label: Videos, type: string, list: true,
placeholder: "https://youtu.be/XXXXXXXXXXX" }
# --- Relations -----------------------------------------------------------
- { name: awards, label: Awards, type: reference, list: true,
options: { collection: awards, multiple: true } }
# --- Optional + UI behavior ---------------------------------------------
- { name: external_url, label: External link (optional), type: string }
- { name: order, label: Grid order (lower = earlier), type: number, default: 100 }
- { name: featured, label: Pin to featured, type: boolean, default: false }
- { name: seo, label: SEO, component: seo }
# ---------------------------------------------------------------
# LIST VIEW CONFIG — controls how entries appear in the CMS list
# ---------------------------------------------------------------
fields: [title, client, date, featured, order]
sort: [order, date, title]
default: { sort: order, order: desc }
# =====================================================================
# ✔ Done — compact, readable, beautifully structured
# =====================================================================