# Project card schema — typed self-definition for any project.
# Source of truth for display metadata, web assets, and portfolio publication.
#
# Each project maintains card.ncl locally and publishes (copies) to the
# portfolio repo alongside its assets/. The portfolio is self-contained —
# it does not depend on the original project repo being alive.

let source_type = [| 'Local, 'Remote, 'Historical |] in

let project_pub_status_type = [| 'Active, 'Beta, 'Maintenance, 'Archived, 'Stealth |] in

let project_card_type = {
  id          | String,                          # matches ontology_node in jpl DAG
  name        | String,
  tagline     | String,
  description | String,
  version     | String                 | default = "",
  status      | project_pub_status_type,
  source      | source_type            | default = 'Local,
  url         | String                 | default = "",
  repo        | String                 | default = "",
  docs        | String                 | default = "",
  logo        | String                 | default = "",
  started_at  | String                 | default = "",
  tags        | Array String           | default = [],
  tools       | Array String           | default = [],
  features    | Array String           | default = [],
  featured    | Bool                   | default = false,
  sort_order  | Number                 | default = 0,
} in

{
  SourceType       = source_type,
  ProjectPubStatus = project_pub_status_type,
  ProjectCard      = project_card_type,
}
