# 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, }