{
  "schemaVersion": "1.0",
  "id": "https://anthemhayek.com/open-source/contact-card-kit.json",
  "name": "DDNYC Contact Card Kit",
  "version": "1.0.0",
  "datePublished": "2026-08-29",
  "status": "stable",
  "canonicalPage": "https://anthemhayek.com/open-source/contact-card",
  "downloadUrl": "https://anthemhayek.com/downloads/ddnyc-contact-card-kit.zip",
  "llmsFullUrl": "https://anthemhayek.com/llms-full.txt",
  "description": "A local Node.js generator for a standards-folded vCard 3.0 contact and a 1290 by 2796 QR share card.",
  "author": {
    "name": "Anthem Hayek Blanchard",
    "url": "https://anthemhayek.com/"
  },
  "license": {
    "spdx": "MIT",
    "url": "https://anthemhayek.com/open-source/contact-card-kit/LICENSE",
    "noticeRequired": true
  },
  "commercialUse": {
    "allowed": true,
    "permissions": [
      "paid client work",
      "commercial products",
      "hosted services",
      "teaching",
      "consulting",
      "modification",
      "white-label distribution",
      "resale"
    ],
    "conditions": [
      "Preserve the MIT copyright and permission notice in copies or substantial portions of the software."
    ],
    "brandRightsGranted": false,
    "endorsementGranted": false,
    "guidanceUrl": "https://anthemhayek.com/open-source/contact-card-kit/COMMERCIAL-USE.md"
  },
  "privacy": {
    "processing": "local",
    "accounts": false,
    "analytics": false,
    "forms": false,
    "database": false,
    "warning": "Contact data placed at a public URL should be treated as public information."
  },
  "runtime": {
    "node": ">=20",
    "packageManager": "npm",
    "platforms": [
      "macOS",
      "Windows",
      "Linux"
    ]
  },
  "commands": {
    "install": "npm install",
    "configure": "cp config.example.json config.json",
    "generate": "npm run generate",
    "test": "npm test"
  },
  "inputs": {
    "schemaUrl": "https://anthemhayek.com/open-source/contact-card-kit/config.schema.json",
    "exampleUrl": "https://anthemhayek.com/open-source/contact-card-kit/config.example.json",
    "required": [
      "firstName",
      "lastName",
      "fullName",
      "phone",
      "email",
      "website",
      "publicVcfUrl"
    ],
    "optional": [
      "organization",
      "title",
      "photoPath",
      "photoUrl",
      "note",
      "socials",
      "eventLabel",
      "cardTitleLines",
      "tagline",
      "colors"
    ]
  },
  "outputs": [
    {
      "path": "dist/contact.vcf",
      "mediaType": "text/vcard",
      "description": "vCard 3.0 contact with core fields, optional PFP and social profiles."
    },
    {
      "path": "dist/share-card.png",
      "mediaType": "image/png",
      "width": 1290,
      "height": 2796,
      "description": "Portrait QR card matching the iPhone 14 aspect ratio."
    }
  ],
  "compatibility": {
    "targetDevices": [
      "iPhone",
      "Android"
    ],
    "portableFields": [
      "name",
      "organization",
      "title",
      "mobile phone",
      "email",
      "website"
    ],
    "bestEffortFields": [
      "contact photo",
      "social profiles"
    ],
    "recipientConfirmationRequired": true,
    "mobileDeviceTestingRequired": true
  },
  "invariants": [
    "The QR destination is HTTPS and equals publicVcfUrl.",
    "The vCard uses version 3.0 and CRLF delimiters.",
    "Every physical vCard line is at most 75 UTF-8 bytes.",
    "Continuation lines begin with one space.",
    "The QR uses high error correction and preserves a quiet zone.",
    "Generation does not collect, submit or persist configuration data outside the local output directory.",
    "No implementation may promise a silent address-book write."
  ],
  "sourceFiles": [
    {
      "name": "README.md",
      "url": "https://anthemhayek.com/open-source/contact-card-kit/README.md",
      "bytes": 3019,
      "sha256": "f50d20f9ac29f13dbfc827686a658930a3e2e3fe758d20e2203bc39027efcb77"
    },
    {
      "name": "AGENTS.md",
      "url": "https://anthemhayek.com/open-source/contact-card-kit/AGENTS.md",
      "bytes": 1992,
      "sha256": "92398b61c39b9edaad63e3b33ce0d0fa387f84bfede6c63803e7eadb9f4b38e0"
    },
    {
      "name": "COMMERCIAL-USE.md",
      "url": "https://anthemhayek.com/open-source/contact-card-kit/COMMERCIAL-USE.md",
      "bytes": 1002,
      "sha256": "1d606eb75c4eafd4d4fa13e9a8023d7d7022a2bd7f0904497a689b516409b5e4"
    },
    {
      "name": "LICENSE",
      "url": "https://anthemhayek.com/open-source/contact-card-kit/LICENSE",
      "bytes": 1079,
      "sha256": "0633f66b7f2e6914e6034d70fd31b74233d71b9e697ed4dac2bf937de9d7e422"
    },
    {
      "name": "package.json",
      "url": "https://anthemhayek.com/open-source/contact-card-kit/package.json",
      "bytes": 674,
      "sha256": "21807623bac878e7011e63a7cac3032903bfd651e30ddc012eff7a705d4c559e"
    },
    {
      "name": "config.schema.json",
      "url": "https://anthemhayek.com/open-source/contact-card-kit/config.schema.json",
      "bytes": 2313,
      "sha256": "8925e398e03ab9973aff6b8c1be1118c6654861bec999bf2312edf52b2248412"
    },
    {
      "name": "config.example.json",
      "url": "https://anthemhayek.com/open-source/contact-card-kit/config.example.json",
      "bytes": 1010,
      "sha256": "6b4fa4c80c3d08efb6d6507cbdac7182d71b2df2a3c5f030a6e76b738b578f48"
    },
    {
      "name": "generate.mjs",
      "url": "https://anthemhayek.com/open-source/contact-card-kit/generate.mjs",
      "bytes": 9559,
      "sha256": "fe2c54a6578acc24d323c651152bb6303c187f84b237194df4e946b249c477a3"
    },
    {
      "name": "test.mjs",
      "url": "https://anthemhayek.com/open-source/contact-card-kit/test.mjs",
      "bytes": 1467,
      "sha256": "081de4dd2aa8064c44d495fd756f789212963c3f076dfd911822a15d98d51450"
    }
  ]
}
