{
  "schema_version": "1.0.0",
  "scanner": {
    "name": "global-capability-catalog",
    "version": "0.1.0"
  },
  "repo": {
    "id": "github-recent__mbarbine__platphorm-keys",
    "name": "mbarbine__platphorm-keys",
    "path": "/Users/bwm.barbinewarnermichael/Documents/github/repositories/github-recent/mbarbine__platphorm-keys",
    "relative_path": "github-recent/mbarbine__platphorm-keys",
    "remote_url": "git@github.com:mbarbine/platphorm-keys.git",
    "default_branch": "main",
    "current_commit": "70203834d44473fd417cee32a783e95803909d6f"
  },
  "languages": [
    {
      "language": "TypeScript",
      "files": 103,
      "bytes": 438199
    },
    {
      "language": "JSON",
      "files": 4,
      "bytes": 300614
    },
    {
      "language": "YAML",
      "files": 1,
      "bytes": 218458
    },
    {
      "language": "Markdown",
      "files": 11,
      "bytes": 66521
    },
    {
      "language": "CSS",
      "files": 2,
      "bytes": 8706
    },
    {
      "language": "JavaScript",
      "files": 3,
      "bytes": 5435
    }
  ],
  "frameworks": [
    {
      "name": "Next.js",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "React",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "Tailwind CSS",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "Vitest",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    }
  ],
  "packages": {
    "package_manager": "pnpm",
    "manifests": [
      {
        "path": "package.json",
        "name": "my-project",
        "version": "0.1.0",
        "scripts": {
          "dev": "next dev",
          "build": "next build",
          "start": "next start",
          "lint": "eslint .",
          "test": "vitest",
          "test:run": "vitest run",
          "test:coverage": "vitest run --coverage"
        },
        "dependencies": {
          "@aws-sdk/client-dynamodb": "^3.700.0",
          "@aws-sdk/lib-dynamodb": "^3.700.0",
          "@hookform/resolvers": "^3.9.1",
          "@vercel/analytics": "1.6.1",
          "@vercel/functions": "^1.5.0",
          "nanoid": "^5.0.9",
          "swr": "^2.2.5",
          "@radix-ui/react-accordion": "1.2.12",
          "@radix-ui/react-alert-dialog": "1.1.15",
          "@radix-ui/react-aspect-ratio": "1.1.8",
          "@radix-ui/react-avatar": "1.1.11",
          "@radix-ui/react-checkbox": "1.3.3",
          "@radix-ui/react-collapsible": "1.1.12",
          "@radix-ui/react-context-menu": "2.2.16",
          "@radix-ui/react-dialog": "1.1.15",
          "@radix-ui/react-dropdown-menu": "2.1.16",
          "@radix-ui/react-hover-card": "1.1.15",
          "@radix-ui/react-label": "2.1.8",
          "@radix-ui/react-menubar": "1.1.16",
          "@radix-ui/react-navigation-menu": "1.2.14",
          "@radix-ui/react-popover": "1.1.15",
          "@radix-ui/react-progress": "1.1.8",
          "@radix-ui/react-radio-group": "1.3.8",
          "@radix-ui/react-scroll-area": "1.2.10",
          "@radix-ui/react-select": "2.2.6",
          "@radix-ui/react-separator": "1.1.8",
          "@radix-ui/react-slider": "1.3.6",
          "@radix-ui/react-slot": "1.2.4",
          "@radix-ui/react-switch": "1.2.6",
          "@radix-ui/react-tabs": "1.1.13",
          "@radix-ui/react-toast": "1.2.15",
          "@radix-ui/react-toggle": "1.1.10",
          "@radix-ui/react-toggle-group": "1.1.11",
          "@radix-ui/react-tooltip": "1.2.8",
          "autoprefixer": "^10.4.20",
          "class-variance-authority": "^0.7.1",
          "clsx": "^2.1.1",
          "cmdk": "1.1.1",
          "date-fns": "4.1.0",
          "embla-carousel-react": "8.6.0",
          "input-otp": "1.4.2",
          "lucide-react": "^0.564.0",
          "next": "16.2.0",
          "next-themes": "^0.4.6",
          "react": "19.2.4",
          "react-day-picker": "9.13.2",
          "react-dom": "19.2.4",
          "react-hook-form": "^7.54.1",
          "react-resizable-panels": "^2.1.7",
          "recharts": "2.15.0",
          "sonner": "^1.7.1",
          "tailwind-merge": "^3.3.1",
          "vaul": "^1.1.2",
          "zod": "^3.24.1"
        },
        "dev_dependencies": {
          "@tailwindcss/postcss": "^4.2.0",
          "@vitest/coverage-v8": "^3.0.0",
          "aws-sdk-client-mock": "^4.0.0",
          "vitest": "^3.0.0",
          "@types/node": "^22",
          "@types/react": "19.2.14",
          "@types/react-dom": "19.2.3",
          "postcss": "^8.5",
          "tailwindcss": "^4.2.0",
          "tw-animate-css": "1.3.3",
          "typescript": "5.7.3"
        }
      }
    ]
  },
  "routes": {
    "api_routes": [
      {
        "route": "/docs",
        "source_path": "app/api/docs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/health",
        "source_path": "app/api/v1/health/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/keys/[keyId]/rotate",
        "source_path": "app/api/v1/keys/[keyId]/rotate/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/keys/[keyId]",
        "source_path": "app/api/v1/keys/[keyId]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "GET",
          "PATCH"
        ]
      },
      {
        "route": "/v1/keys/provision",
        "source_path": "app/api/v1/keys/provision/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "OPTIONS",
          "POST"
        ]
      },
      {
        "route": "/v1/keys",
        "source_path": "app/api/v1/keys/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/keys/validate",
        "source_path": "app/api/v1/keys/validate/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/telemetry",
        "source_path": "app/api/v1/telemetry/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      }
    ],
    "app_routes": [
      {
        "route": "/docs",
        "source_path": "app/docs/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/faq",
        "source_path": "app/faq/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      }
    ]
  },
  "components": [
    {
      "name": "create-key-dialog",
      "kind": "ui-component",
      "source_path": "components/keys/create-key-dialog.tsx"
    },
    {
      "name": "key-detail-sheet",
      "kind": "ui-component",
      "source_path": "components/keys/key-detail-sheet.tsx"
    },
    {
      "name": "key-list",
      "kind": "ui-component",
      "source_path": "components/keys/key-list.tsx"
    },
    {
      "name": "footer",
      "kind": "ui-component",
      "source_path": "components/layout/footer.tsx"
    },
    {
      "name": "header",
      "kind": "ui-component",
      "source_path": "components/layout/header.tsx"
    },
    {
      "name": "theme-provider",
      "kind": "ui-component",
      "source_path": "components/theme-provider.tsx"
    },
    {
      "name": "accordion",
      "kind": "ui-component",
      "source_path": "components/ui/accordion.tsx"
    },
    {
      "name": "alert-dialog",
      "kind": "ui-component",
      "source_path": "components/ui/alert-dialog.tsx"
    },
    {
      "name": "alert",
      "kind": "ui-component",
      "source_path": "components/ui/alert.tsx"
    },
    {
      "name": "aspect-ratio",
      "kind": "ui-component",
      "source_path": "components/ui/aspect-ratio.tsx"
    },
    {
      "name": "avatar",
      "kind": "ui-component",
      "source_path": "components/ui/avatar.tsx"
    },
    {
      "name": "badge",
      "kind": "ui-component",
      "source_path": "components/ui/badge.tsx"
    },
    {
      "name": "breadcrumb",
      "kind": "ui-component",
      "source_path": "components/ui/breadcrumb.tsx"
    },
    {
      "name": "button-group",
      "kind": "ui-component",
      "source_path": "components/ui/button-group.tsx"
    },
    {
      "name": "button",
      "kind": "ui-component",
      "source_path": "components/ui/button.tsx"
    },
    {
      "name": "calendar",
      "kind": "ui-component",
      "source_path": "components/ui/calendar.tsx"
    },
    {
      "name": "card",
      "kind": "ui-component",
      "source_path": "components/ui/card.tsx"
    },
    {
      "name": "carousel",
      "kind": "ui-component",
      "source_path": "components/ui/carousel.tsx"
    },
    {
      "name": "chart",
      "kind": "ui-component",
      "source_path": "components/ui/chart.tsx"
    },
    {
      "name": "checkbox",
      "kind": "ui-component",
      "source_path": "components/ui/checkbox.tsx"
    },
    {
      "name": "collapsible",
      "kind": "ui-component",
      "source_path": "components/ui/collapsible.tsx"
    },
    {
      "name": "command",
      "kind": "ui-component",
      "source_path": "components/ui/command.tsx"
    },
    {
      "name": "context-menu",
      "kind": "ui-component",
      "source_path": "components/ui/context-menu.tsx"
    },
    {
      "name": "dialog",
      "kind": "ui-component",
      "source_path": "components/ui/dialog.tsx"
    },
    {
      "name": "drawer",
      "kind": "ui-component",
      "source_path": "components/ui/drawer.tsx"
    },
    {
      "name": "dropdown-menu",
      "kind": "ui-component",
      "source_path": "components/ui/dropdown-menu.tsx"
    },
    {
      "name": "empty",
      "kind": "ui-component",
      "source_path": "components/ui/empty.tsx"
    },
    {
      "name": "field",
      "kind": "ui-component",
      "source_path": "components/ui/field.tsx"
    },
    {
      "name": "form",
      "kind": "ui-component",
      "source_path": "components/ui/form.tsx"
    },
    {
      "name": "hover-card",
      "kind": "ui-component",
      "source_path": "components/ui/hover-card.tsx"
    },
    {
      "name": "input-group",
      "kind": "ui-component",
      "source_path": "components/ui/input-group.tsx"
    },
    {
      "name": "input-otp",
      "kind": "ui-component",
      "source_path": "components/ui/input-otp.tsx"
    },
    {
      "name": "input",
      "kind": "ui-component",
      "source_path": "components/ui/input.tsx"
    },
    {
      "name": "item",
      "kind": "ui-component",
      "source_path": "components/ui/item.tsx"
    },
    {
      "name": "kbd",
      "kind": "ui-component",
      "source_path": "components/ui/kbd.tsx"
    },
    {
      "name": "label",
      "kind": "ui-component",
      "source_path": "components/ui/label.tsx"
    },
    {
      "name": "menubar",
      "kind": "ui-component",
      "source_path": "components/ui/menubar.tsx"
    },
    {
      "name": "navigation-menu",
      "kind": "ui-component",
      "source_path": "components/ui/navigation-menu.tsx"
    },
    {
      "name": "pagination",
      "kind": "ui-component",
      "source_path": "components/ui/pagination.tsx"
    },
    {
      "name": "popover",
      "kind": "ui-component",
      "source_path": "components/ui/popover.tsx"
    },
    {
      "name": "progress",
      "kind": "ui-component",
      "source_path": "components/ui/progress.tsx"
    },
    {
      "name": "radio-group",
      "kind": "ui-component",
      "source_path": "components/ui/radio-group.tsx"
    },
    {
      "name": "resizable",
      "kind": "ui-component",
      "source_path": "components/ui/resizable.tsx"
    },
    {
      "name": "scroll-area",
      "kind": "ui-component",
      "source_path": "components/ui/scroll-area.tsx"
    },
    {
      "name": "select",
      "kind": "ui-component",
      "source_path": "components/ui/select.tsx"
    },
    {
      "name": "separator",
      "kind": "ui-component",
      "source_path": "components/ui/separator.tsx"
    },
    {
      "name": "sheet",
      "kind": "ui-component",
      "source_path": "components/ui/sheet.tsx"
    },
    {
      "name": "sidebar",
      "kind": "ui-component",
      "source_path": "components/ui/sidebar.tsx"
    },
    {
      "name": "skeleton",
      "kind": "ui-component",
      "source_path": "components/ui/skeleton.tsx"
    },
    {
      "name": "slider",
      "kind": "ui-component",
      "source_path": "components/ui/slider.tsx"
    },
    {
      "name": "sonner",
      "kind": "ui-component",
      "source_path": "components/ui/sonner.tsx"
    },
    {
      "name": "spinner",
      "kind": "ui-component",
      "source_path": "components/ui/spinner.tsx"
    },
    {
      "name": "switch",
      "kind": "ui-component",
      "source_path": "components/ui/switch.tsx"
    },
    {
      "name": "table",
      "kind": "ui-component",
      "source_path": "components/ui/table.tsx"
    },
    {
      "name": "tabs",
      "kind": "ui-component",
      "source_path": "components/ui/tabs.tsx"
    },
    {
      "name": "textarea",
      "kind": "ui-component",
      "source_path": "components/ui/textarea.tsx"
    },
    {
      "name": "toast",
      "kind": "ui-component",
      "source_path": "components/ui/toast.tsx"
    },
    {
      "name": "toaster",
      "kind": "ui-component",
      "source_path": "components/ui/toaster.tsx"
    },
    {
      "name": "toggle-group",
      "kind": "ui-component",
      "source_path": "components/ui/toggle-group.tsx"
    },
    {
      "name": "toggle",
      "kind": "ui-component",
      "source_path": "components/ui/toggle.tsx"
    },
    {
      "name": "tooltip",
      "kind": "ui-component",
      "source_path": "components/ui/tooltip.tsx"
    },
    {
      "name": "use-mobile",
      "kind": "ui-component",
      "source_path": "components/ui/use-mobile.tsx"
    }
  ],
  "data_models": [],
  "database": {
    "databases": [],
    "schemas": [],
    "migrations": []
  },
  "tests": [
    {
      "name": "keys.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/api/keys.test.ts"
    },
    {
      "name": "audit.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/audit.test.ts"
    },
    {
      "name": "db.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/db.test.ts"
    },
    {
      "name": "encryption.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/encryption.test.ts"
    },
    {
      "name": "logger.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/logger.test.ts"
    },
    {
      "name": "mask.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/mask.test.ts"
    },
    {
      "name": "types.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/types.test.ts"
    }
  ],
  "ci": {
    "workflows": []
  },
  "containers": {
    "dockerfiles": [],
    "compose_files": []
  },
  "env": {
    "example_files": [
      {
        "path": ".env.example"
      }
    ],
    "variables": [
      {
        "name": "AWS_REGION",
        "source_paths": [
          "__tests__/lib/audit.test.ts",
          "__tests__/lib/db.test.ts",
          "__tests__/setup.ts",
          ".env.example",
          "lib/keys/audit.ts",
          "lib/keys/db.ts",
          "scripts/init-dynamodb.js"
        ],
        "likely_secret": false
      },
      {
        "name": "AWS_ROLE_ARN",
        "source_paths": [
          "__tests__/lib/audit.test.ts",
          "__tests__/lib/db.test.ts",
          "__tests__/setup.ts",
          ".env.example",
          "lib/keys/audit.ts",
          "lib/keys/db.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "DYNAMODB_TABLE_NAME",
        "source_paths": [
          "__tests__/lib/audit.test.ts",
          "__tests__/lib/db.test.ts",
          "__tests__/setup.ts",
          ".env.example",
          "lib/keys/audit.ts",
          "lib/keys/db.ts",
          "scripts/init-dynamodb.js"
        ],
        "likely_secret": false
      },
      {
        "name": "DYNAMODB_TABLE_PARTITION_KEY",
        "source_paths": [
          "__tests__/setup.ts",
          ".env.example",
          "lib/keys/db.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "DYNAMODB_TABLE_SORT_KEY",
        "source_paths": [
          "lib/keys/db.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "ENCRYPTION_KEY",
        "source_paths": [
          "__tests__/setup.ts",
          ".env.example",
          "lib/keys/encryption.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "LOG_LEVEL",
        "source_paths": [
          "lib/keys/logger.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "LOG_STACK_TRACES",
        "source_paths": [
          "lib/keys/logger.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NODE_ENV",
        "source_paths": [
          "__tests__/setup.ts",
          "lib/keys/db.ts",
          "lib/keys/encryption.ts",
          "lib/keys/logger.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_API_KEY",
        "source_paths": [
          "__tests__/setup.ts",
          ".env.example",
          "lib/keys/middleware.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "VERCEL_GIT_COMMIT_SHA",
        "source_paths": [
          "app/api/v1/health/route.ts"
        ],
        "likely_secret": false
      }
    ]
  },
  "configs": [
    {
      "path": "next.config.mjs"
    },
    {
      "path": "package.json"
    },
    {
      "path": "postcss.config.mjs"
    },
    {
      "path": "tailwind.config.ts"
    },
    {
      "path": "tsconfig.json"
    }
  ],
  "docs": {
    "readme_paths": [
      {
        "path": "README.md"
      }
    ],
    "doc_paths": [],
    "llms_context_paths": []
  },
  "discovery_files": {
    "openapi": [],
    "mcp": [],
    "llms": [],
    "sitemaps": [],
    "feeds": [],
    "well_known": [],
    "robots": [],
    "manifests": []
  },
  "integrations": [
    {
      "name": "AWS",
      "confidence": "medium",
      "evidence_paths": [
        "__tests__/api/keys.test.ts",
        "__tests__/lib/audit.test.ts",
        "__tests__/lib/db.test.ts",
        "__tests__/setup.ts",
        ".env.example",
        "app/api/v1/health/route.ts",
        "BUILD_SUMMARY.md",
        "COMPLETION_REPORT.md",
        "FILE_MANIFEST.md",
        "lib/keys/audit.ts",
        "lib/keys/db.ts",
        "package-lock.json",
        "package.json",
        "pnpm-lock.yaml"
      ]
    },
    {
      "name": "PlatPhorm",
      "confidence": "medium",
      "evidence_paths": [
        "__tests__/lib/logger.test.ts",
        "__tests__/lib/mask.test.ts",
        "__tests__/setup.ts",
        ".env.example",
        "BUILD_SUMMARY.md",
        "COMPLETION_REPORT.md",
        "FILE_MANIFEST.md",
        "IMPLEMENTATION_GUIDE.md",
        "package.json"
      ]
    },
    {
      "name": "Vercel",
      "confidence": "medium",
      "evidence_paths": [
        "__tests__/lib/audit.test.ts",
        "__tests__/lib/db.test.ts",
        "__tests__/setup.ts",
        "app/api/v1/health/route.ts",
        "app/layout.tsx",
        "lib/keys/audit.ts",
        "lib/keys/db.ts",
        "package-lock.json",
        "package.json",
        "pnpm-lock.yaml"
      ]
    }
  ],
  "license": {
    "spdx": null,
    "paths": []
  },
  "comments": [
    {
      "kind": "security",
      "source_path": ".env.example",
      "line": 14,
      "text": "- Security: Never commit to version control, store in Vercel secrets only"
    },
    {
      "kind": "security",
      "source_path": ".env.example",
      "line": 21,
      "text": "- Security: Server-side only, never exposed in logs or client code"
    },
    {
      "kind": "security",
      "source_path": ".env.example",
      "line": 60,
      "text": "## Security Considerations"
    },
    {
      "kind": "security",
      "source_path": ".env.example",
      "line": 73,
      "text": "- Review periodically for security"
    },
    {
      "kind": "security",
      "source_path": ".Jules/sentinel.md",
      "line": 3,
      "text": "**Learning:** We must follow the principle of \"fail securely\". If a critical security component like an encryption key is missing in production, the application should throw an error and fail rather than using an insecure fallback."
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 230,
      "text": "security: [{ bearerAuth: [] }],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 287,
      "text": "security: [{ bearerAuth: [] }],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 336,
      "text": "security: [{ bearerAuth: [] }],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 363,
      "text": "security: [{ bearerAuth: [] }],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 403,
      "text": "security: [{ bearerAuth: [] }],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 425,
      "text": "security: [{ bearerAuth: [] }],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 456,
      "text": "security: [{ bearerAuth: [] }],"
    },
    {
      "kind": "security",
      "source_path": "app/faq/page.tsx",
      "line": 13,
      "text": "description: 'Common questions about PlatPhorm Keys API key management, security, encryption, and best practices.',"
    },
    {
      "kind": "security",
      "source_path": "app/faq/page.tsx",
      "line": 40,
      "text": "category: 'Security',"
    },
    {
      "kind": "security",
      "source_path": "app/faq/page.tsx",
      "line": 53,
      "text": "answer: 'No. For security reasons, the plaintext key is only displayed once at creation. If you lose your key, you must create a new one or rotate an existing key. This ensures that even if our database is compromised, your keys remain secu"
    },
    {
      "kind": "security",
      "source_path": "app/faq/page.tsx",
      "line": 57,
      "text": "answer: 'Key rotation generates a new key value while keeping the same key ID and settings. Use it when you suspect a key may have been compromised, for regular security hygiene (e.g., every 90 days), or when team members with access leave."
    },
    {
      "kind": "security",
      "source_path": "app/faq/page.tsx",
      "line": 75,
      "text": "answer: 'When you provision a key, we automatically generate a client UUID (unique identifier for your tenant) and a fingerprint (derived from your browser/device). These help with tracking, security, and rate limiting.',"
    },
    {
      "kind": "security",
      "source_path": "app/faq/page.tsx",
      "line": 93,
      "text": "answer: 'Yes, all key operations (create, update, rotate, revoke, delete, validate) are logged with timestamps, IP addresses, user agents, and trace IDs. This audit trail helps with security investigations and compliance.',"
    },
    {
      "kind": "security",
      "source_path": "app/layout.tsx",
      "line": 88,
      "text": "classification: 'API Security',"
    },
    {
      "kind": "security",
      "source_path": "app/rss.xml/route.ts",
      "line": 32,
      "text": "<description>Common questions about API key management and security.</description>"
    },
    {
      "kind": "security",
      "source_path": "BUILD_SUMMARY.md",
      "line": 11,
      "text": "### 1. Encryption & Security (`lib/keys/`)"
    },
    {
      "kind": "security",
      "source_path": "BUILD_SUMMARY.md",
      "line": 154,
      "text": "- Security architecture"
    },
    {
      "kind": "security",
      "source_path": "BUILD_SUMMARY.md",
      "line": 163,
      "text": "- Security considerations"
    },
    {
      "kind": "security",
      "source_path": "BUILD_SUMMARY.md",
      "line": 186,
      "text": "## 🔐 Security Features Implemented"
    },
    {
      "kind": "security",
      "source_path": "COMPLETION_REPORT.md",
      "line": 5,
      "text": "I have successfully built a comprehensive, production-grade **Secure API Key Management System** for keys.platphormnews.com with extensive logging, security, and testing."
    },
    {
      "kind": "security",
      "source_path": "COMPLETION_REPORT.md",
      "line": 11,
      "text": "### ✅ Core Security Infrastructure"
    },
    {
      "kind": "security",
      "source_path": "COMPLETION_REPORT.md",
      "line": 46,
      "text": "- **SECURITY_AUDIT.md** (369 lines) - Security validation checklist"
    },
    {
      "kind": "security",
      "source_path": "COMPLETION_REPORT.md",
      "line": 115,
      "text": "## 🔐 Security Highlights"
    },
    {
      "kind": "security",
      "source_path": "COMPLETION_REPORT.md",
      "line": 182,
      "text": "| **Security** | ✅ AES-256-GCM, Rate Limit, Audit Log |"
    },
    {
      "kind": "security",
      "source_path": "COMPLETION_REPORT.md",
      "line": 223,
      "text": "| **SECURITY_AUDIT.md** | Security checklist & validation |"
    },
    {
      "kind": "security",
      "source_path": "COMPLETION_REPORT.md",
      "line": 240,
      "text": "- [x] Security audit checklist"
    },
    {
      "kind": "security",
      "source_path": "FILE_MANIFEST.md",
      "line": 81,
      "text": "├── SECURITY_AUDIT.md          ✅ (369 lines) Security checklist & validation"
    },
    {
      "kind": "security",
      "source_path": "FILE_MANIFEST.md",
      "line": 91,
      "text": "### Security Features"
    },
    {
      "kind": "security",
      "source_path": "FILE_MANIFEST.md",
      "line": 141,
      "text": "- [x] Security audit checklist"
    },
    {
      "kind": "security",
      "source_path": "FILE_MANIFEST.md",
      "line": 147,
      "text": "## 🔐 Security Validations"
    },
    {
      "kind": "security",
      "source_path": "FILE_MANIFEST.md",
      "line": 202,
      "text": "- [x] Security reviewed"
    },
    {
      "kind": "security",
      "source_path": "FILE_MANIFEST.md",
      "line": 232,
      "text": "4. `SECURITY_AUDIT.md` - Security validation checklist"
    },
    {
      "kind": "security",
      "source_path": "FILE_MANIFEST.md",
      "line": 279,
      "text": "- ✅ Security audit checklist"
    },
    {
      "kind": "security",
      "source_path": "FILE_MANIFEST.md",
      "line": 290,
      "text": "- **Security Information**: SECURITY_AUDIT.md"
    },
    {
      "kind": "security",
      "source_path": "IMPLEMENTATION_GUIDE.md",
      "line": 83,
      "text": "## 🔐 Security Architecture"
    },
    {
      "kind": "security",
      "source_path": "KEYS_MANAGEMENT_README.md",
      "line": 49,
      "text": "### Security Features"
    },
    {
      "kind": "security",
      "source_path": "KEYS_MANAGEMENT_README.md",
      "line": 163,
      "text": "**Important Security Practices:**"
    },
    {
      "kind": "security",
      "source_path": "lib/config/network.ts",
      "line": 49,
      "text": "'API security',"
    },
    {
      "kind": "security",
      "source_path": "lib/config/network.ts",
      "line": 67,
      "text": "'security',"
    },
    {
      "kind": "security",
      "source_path": "lib/keys/audit.ts",
      "line": 5,
      "text": "* SECURITY:"
    },
    {
      "kind": "security",
      "source_path": "lib/keys/db.ts",
      "line": 5,
      "text": "* SECURITY:"
    },
    {
      "kind": "security",
      "source_path": "lib/keys/encryption.ts",
      "line": 4,
      "text": "* SECURITY NOTES:"
    },
    {
      "kind": "security",
      "source_path": "lib/keys/logger.ts",
      "line": 5,
      "text": "* SECURITY: Key values are NEVER logged - only key_id and key_prefix"
    },
    {
      "kind": "security",
      "source_path": "lib/keys/mask.ts",
      "line": 185,
      "text": "console.warn('[SECURITY] Sensitive data detected in debug log, masking...');"
    },
    {
      "kind": "security",
      "source_path": "lib/keys/middleware.ts",
      "line": 5,
      "text": "* SECURITY:"
    },
    {
      "kind": "deprecated",
      "source_path": "package-lock.json",
      "line": 6224,
      "text": "\"deprecated\": \"Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by c"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 2283,
      "text": "deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by cont"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 7,
      "text": "For a comprehensive guide to the architecture, components, and security principles of this project, please see the [Technical Documentation](TECHNICAL_DOCUMENTATION.md)."
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 1,
      "text": "# 🔐 Security Audit Checklist"
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 3,
      "text": "## Pre-Deployment Security Validation"
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 5,
      "text": "This checklist ensures the Secure Key Management System meets all security requirements before production deployment."
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 169,
      "text": "## 🔌 API Security"
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 172,
      "text": "- [x] **HTTP Headers**: Security headers set"
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 180,
      "text": "# Check security headers"
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 187,
      "text": "## 🗄️ Database Security"
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 253,
      "text": "- [x] **Security Tests**: Auth failures, invalid input, rate limits"
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 295,
      "text": "### Security"
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 301,
      "text": "- [ ] Security headers verified"
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 327,
      "text": "- [ ] Security review completed"
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 343,
      "text": "## 📞 Security Contacts"
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 345,
      "text": "- **Security Issues**: Report to team@platphorm.news"
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 361,
      "text": "- [x] Database security verified"
    },
    {
      "kind": "security",
      "source_path": "SECURITY_AUDIT.md",
      "line": 368,
      "text": "**Reviewer**: Security Team"
    },
    {
      "kind": "security",
      "source_path": "TECHNICAL_DOCUMENTATION.md",
      "line": 3,
      "text": "This document outlines the architecture, components, and security principles of the Key Management System."
    },
    {
      "kind": "security",
      "source_path": "TECHNICAL_DOCUMENTATION.md",
      "line": 52,
      "text": "## Security Principles"
    }
  ],
  "security": {
    "secret_risks": [],
    "unsafe_patterns": [
      {
        "name": "dangerously-set-html",
        "confidence": "medium",
        "evidence_paths": [
          "app/faq/page.tsx",
          "app/layout.tsx",
          "components/ui/chart.tsx"
        ]
      },
      {
        "name": "ssrf-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "components/keys/key-list.tsx"
        ]
      }
    ],
    "sensitive_data_indicators": [
      {
        "name": "api_key",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/lib/logger.test.ts",
          "__tests__/lib/mask.test.ts",
          "__tests__/setup.ts",
          ".env.example",
          "BUILD_SUMMARY.md",
          "COMPLETION_REPORT.md",
          "FILE_MANIFEST.md",
          "IMPLEMENTATION_GUIDE.md",
          "KEYS_MANAGEMENT_README.md",
          "lib/keys/actions.ts",
          "lib/keys/logger.ts",
          "lib/keys/mask.ts",
          "lib/keys/middleware.ts",
          "SECURITY_AUDIT.md"
        ]
      },
      {
        "name": "card",
        "confidence": "medium",
        "evidence_paths": [
          "app/docs/page.tsx",
          "app/faq/page.tsx",
          "app/globals.css",
          "app/layout.tsx",
          "app/page.tsx",
          "components/keys/key-list.tsx",
          "components/layout/footer.tsx",
          "components/ui/alert.tsx",
          "components/ui/calendar.tsx",
          "components/ui/card.tsx",
          "components/ui/hover-card.tsx",
          "lib/config/network.ts",
          "package-lock.json",
          "package.json",
          "pnpm-lock.yaml",
          "styles/globals.css",
          "tailwind.config.ts"
        ]
      },
      {
        "name": "email",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/lib/mask.test.ts",
          "app/layout.tsx",
          "lib/config/network.ts",
          "lib/keys/mask.ts"
        ]
      },
      {
        "name": "fingerprint",
        "confidence": "medium",
        "evidence_paths": [
          "app/api/docs/route.ts",
          "app/api/v1/keys/provision/route.ts",
          "app/docs/page.tsx",
          "app/faq/page.tsx",
          "app/llms.txt/route.ts",
          "app/page.tsx",
          "BUILD_SUMMARY.md",
          "IMPLEMENTATION_GUIDE.md",
          "KEYS_MANAGEMENT_README.md",
          "lib/keys/telemetry.ts",
          "SECURITY_AUDIT.md"
        ]
      },
      {
        "name": "health",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/api/keys.test.ts",
          ".env.example",
          "app/api/docs/route.ts",
          "app/api/v1/health/route.ts",
          "app/docs/page.tsx",
          "app/llms.txt/route.ts",
          "BUILD_SUMMARY.md",
          "COMPLETION_REPORT.md",
          "FILE_MANIFEST.md",
          "IMPLEMENTATION_GUIDE.md",
          "KEYS_MANAGEMENT_README.md",
          "lib/config/network.ts",
          "lib/keys/encryption.ts",
          "SECURITY_AUDIT.md"
        ]
      },
      {
        "name": "ip address",
        "confidence": "medium",
        "evidence_paths": [
          "app/faq/page.tsx"
        ]
      },
      {
        "name": "location",
        "confidence": "medium",
        "evidence_paths": [
          ".env.example",
          ".Jules/bolt.md"
        ]
      },
      {
        "name": "password",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/lib/logger.test.ts",
          "__tests__/lib/mask.test.ts",
          "IMPLEMENTATION_GUIDE.md",
          "lib/keys/logger.ts",
          "lib/keys/mask.ts",
          "SECURITY_AUDIT.md",
          "TECHNICAL_DOCUMENTATION.md"
        ]
      },
      {
        "name": "pii",
        "confidence": "medium",
        "evidence_paths": [
          "package-lock.json",
          "pnpm-lock.yaml",
          "SECURITY_AUDIT.md"
        ]
      },
      {
        "name": "secret-like environment variables",
        "confidence": "medium",
        "evidence_paths": [
          "package.json"
        ]
      },
      {
        "name": "token",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/api/keys.test.ts",
          "__tests__/lib/logger.test.ts",
          "__tests__/lib/mask.test.ts",
          ".env.example",
          "app/api/docs/route.ts",
          "app/api/v1/keys/validate/route.ts",
          "app/docs/page.tsx",
          "app/faq/page.tsx",
          "app/llms.txt/route.ts",
          "BUILD_SUMMARY.md",
          "COMPLETION_REPORT.md",
          "FILE_MANIFEST.md",
          "IMPLEMENTATION_GUIDE.md",
          "lib/keys/logger.ts",
          "lib/keys/mask.ts",
          "lib/keys/middleware.ts",
          "package-lock.json",
          "pnpm-lock.yaml",
          "SECURITY_AUDIT.md",
          "TECHNICAL_DOCUMENTATION.md"
        ]
      }
    ]
  },
  "generated_at": "2026-05-16T16:44:15.642Z"
}
