{
  "schema_version": "1.0.0",
  "scanner": {
    "name": "global-capability-catalog",
    "version": "0.1.0"
  },
  "repo": {
    "id": "github-recent__mbarbine__gta-6-countdown-webby",
    "name": "mbarbine__gta-6-countdown-webby",
    "path": "/Users/bwm.barbinewarnermichael/Documents/github/repositories/github-recent/mbarbine__gta-6-countdown-webby",
    "relative_path": "github-recent/mbarbine__gta-6-countdown-webby",
    "remote_url": "git@github.com:mbarbine/gta-6-countdown-webby.git",
    "default_branch": "main",
    "current_commit": "0f16dd4e22ce8c62c60bf0ea6264d5b8666d37ff"
  },
  "languages": [
    {
      "language": "TypeScript",
      "files": 59,
      "bytes": 188291
    },
    {
      "language": "YAML",
      "files": 2,
      "bytes": 182692
    },
    {
      "language": "Markdown",
      "files": 9,
      "bytes": 47827
    },
    {
      "language": "CSS",
      "files": 2,
      "bytes": 15355
    },
    {
      "language": "JSON",
      "files": 6,
      "bytes": 5878
    },
    {
      "language": "JavaScript",
      "files": 2,
      "bytes": 1666
    },
    {
      "language": "XML",
      "files": 1,
      "bytes": 222
    }
  ],
  "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": "gta-6-countdown-webby",
        "version": "0.0.3",
        "scripts": {
          "build": "next build",
          "dev": "next dev",
          "lint": "eslint .",
          "start": "next start",
          "test": "vitest run",
          "test:watch": "vitest"
        },
        "dependencies": {
          "@hookform/resolvers": "^5.2.2",
          "@pinia/colada": "latest",
          "@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",
          "@vercel/analytics": "1.6.1",
          "@vercel/speed-insights": "1.3.1",
          "@vue/compiler-sfc": "latest",
          "autoprefixer": "^10.4.27",
          "botid": "^1.5.11",
          "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",
          "next": "16.1.6",
          "next-themes": "^0.4.6",
          "pinia": "latest",
          "react": "19.2.4",
          "react-day-picker": "9.14.0",
          "react-dom": "19.2.4",
          "react-hook-form": "^7.71.2",
          "react-resizable-panels": "^4.7.2",
          "recharts": "3.8.0",
          "sonner": "^2.0.7",
          "tailwind-merge": "^3.5.0",
          "tailwindcss-animate": "^1.0.7",
          "vaul": "^1.1.2",
          "vue-router": "^5.0.3",
          "zod": "4.3.6"
        },
        "dev_dependencies": {
          "@tailwindcss/postcss": "^4.2.1",
          "@types/node": "^25.3.5",
          "@types/react": "^19.2.14",
          "@types/react-dom": "^19.2.3",
          "baseline-browser-mapping": "^2.10.0",
          "postcss": "^8.5.8",
          "tailwindcss": "^4.2.1",
          "tw-animate-css": "1.4.0",
          "typescript": "^5.9.3",
          "vitest": "^4.0.18"
        }
      }
    ]
  },
  "routes": {
    "api_routes": [
      {
        "route": "/docs",
        "source_path": "app/api/docs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/health",
        "source_path": "app/api/health/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/mcp",
        "source_path": "app/api/mcp/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/openapi.json",
        "source_path": "app/api/openapi.json/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      }
    ],
    "app_routes": [
      {
        "route": "/faq",
        "source_path": "app/faq/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/jobs/senior-global-countdown-editor",
        "source_path": "app/jobs/senior-global-countdown-editor/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/platphorm-net-opt",
        "source_path": "app/platphorm-net-opt/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      }
    ]
  },
  "components": [
    {
      "name": "disruption-stats",
      "kind": "ui-component",
      "source_path": "components/disruption-stats.tsx"
    },
    {
      "name": "footer",
      "kind": "ui-component",
      "source_path": "components/footer.tsx"
    },
    {
      "name": "future-timeline",
      "kind": "ui-component",
      "source_path": "components/future-timeline.tsx"
    },
    {
      "name": "hero-countdown",
      "kind": "ui-component",
      "source_path": "components/hero-countdown.tsx"
    },
    {
      "name": "industry-news",
      "kind": "ui-component",
      "source_path": "components/industry-news.tsx"
    },
    {
      "name": "shopify-joke",
      "kind": "ui-component",
      "source_path": "components/shopify-joke.tsx"
    },
    {
      "name": "theme-provider",
      "kind": "ui-component",
      "source_path": "components/theme-provider.tsx"
    },
    {
      "name": "trailer-section",
      "kind": "ui-component",
      "source_path": "components/trailer-section.tsx"
    },
    {
      "name": "button",
      "kind": "ui-component",
      "source_path": "components/ui/button.tsx"
    },
    {
      "name": "unicode-icon",
      "kind": "ui-component",
      "source_path": "components/ui/unicode-icon.tsx"
    }
  ],
  "data_models": [],
  "database": {
    "databases": [],
    "schemas": [],
    "migrations": []
  },
  "tests": [
    {
      "name": "ai-plugin.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/ai-plugin.test.ts"
    },
    {
      "name": "api-docs.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/api-docs.test.ts"
    },
    {
      "name": "assets-icons.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/assets-icons.test.ts"
    },
    {
      "name": "discovery-routes.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/discovery-routes.test.ts"
    },
    {
      "name": "layout-countdown.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/layout-countdown.test.ts"
    },
    {
      "name": "network-readiness.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/network-readiness.test.ts"
    },
    {
      "name": "robots.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/robots.test.ts"
    },
    {
      "name": "sitemap.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/sitemap.test.ts"
    },
    {
      "name": "web-standards.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/web-standards.test.ts"
    },
    {
      "name": "well-known-routes.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/well-known-routes.test.ts"
    }
  ],
  "ci": {
    "workflows": []
  },
  "containers": {
    "dockerfiles": [],
    "compose_files": []
  },
  "env": {
    "example_files": [],
    "variables": []
  },
  "configs": [
    {
      "path": "next.config.mjs"
    },
    {
      "path": "package.json"
    },
    {
      "path": "pnpm-workspace.yaml"
    },
    {
      "path": "postcss.config.mjs"
    },
    {
      "path": "tsconfig.json"
    }
  ],
  "docs": {
    "readme_paths": [
      {
        "path": "README.md"
      }
    ],
    "doc_paths": [],
    "llms_context_paths": []
  },
  "discovery_files": {
    "openapi": [],
    "mcp": [
      {
        "path": "app/api/mcp/route.ts"
      }
    ],
    "llms": [],
    "sitemaps": [],
    "feeds": [],
    "well_known": [
      {
        "path": "app/.well-known/ai-plugin.json/route.ts"
      },
      {
        "path": "app/.well-known/change-password/route.ts"
      },
      {
        "path": "app/.well-known/network.json/route.ts"
      },
      {
        "path": "app/.well-known/security.txt/route.ts"
      }
    ],
    "robots": [],
    "manifests": []
  },
  "integrations": [
    {
      "name": "Vercel",
      "confidence": "medium",
      "evidence_paths": [
        "app/layout.tsx",
        "package.json",
        "pnpm-lock.yaml"
      ]
    }
  ],
  "license": {
    "spdx": null,
    "paths": []
  },
  "comments": [
    {
      "kind": "security",
      "source_path": ".Jules/sentinel.md",
      "line": 5,
      "text": "## 2024-03-24 - Missing Security Headers"
    },
    {
      "kind": "security",
      "source_path": ".Jules/sentinel.md",
      "line": 6,
      "text": "**Vulnerability:** The application was missing basic security headers like X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy."
    },
    {
      "kind": "security",
      "source_path": ".Jules/sentinel.md",
      "line": 7,
      "text": "**Learning:** Next.js requires explicit configuration in `next.config.mjs` to add these standard security headers."
    },
    {
      "kind": "security",
      "source_path": ".Jules/sentinel.md",
      "line": 8,
      "text": "**Prevention:** Always include a standard set of security headers in the `headers()` function of `next.config.mjs` for all routes `/(.*)`."
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 4,
      "text": "const content = `Contact: mailto:security@ph3ar.com"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 8,
      "text": "Canonical: https://gta.platphormnews.com/.well-known/security.txt"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 9,
      "text": "Policy: https://gta.platphormnews.com/security-policy"
    },
    {
      "kind": "security",
      "source_path": "app/error.tsx",
      "line": 66,
      "text": "href=\"mailto:security@ph3ar.com\""
    },
    {
      "kind": "security",
      "source_path": "app/error.tsx",
      "line": 69,
      "text": "security@ph3ar.com"
    },
    {
      "kind": "security",
      "source_path": "app/platphorm-net-opt/page.tsx",
      "line": 179,
      "text": "<li>• Well-known routes: ai-plugin.json, network.json, security.txt</li>"
    },
    {
      "kind": "security",
      "source_path": "CHANGELOG.md",
      "line": 78,
      "text": "- Minimum versions enforced for security"
    },
    {
      "kind": "security",
      "source_path": "lib/performance-config.ts",
      "line": 106,
      "text": "'/.well-known/security.txt',"
    },
    {
      "kind": "security",
      "source_path": "lib/performance-config.ts",
      "line": 185,
      "text": "'/.well-known/security.txt',"
    },
    {
      "kind": "security",
      "source_path": "lib/performance-config.ts",
      "line": 202,
      "text": "// SECURITY HEADERS"
    },
    {
      "kind": "security",
      "source_path": "lib/performance-config.ts",
      "line": 205,
      "text": "export const SECURITY = {"
    },
    {
      "kind": "security",
      "source_path": "lib/performance-config.ts",
      "line": 206,
      "text": "// Security.txt for vulnerability disclosure"
    },
    {
      "kind": "security",
      "source_path": "lib/performance-config.ts",
      "line": 209,
      "text": "// Content Security Policy (configured in Vercel)"
    },
    {
      "kind": "security",
      "source_path": "next.config.mjs",
      "line": 27,
      "text": "// Apply security headers"
    },
    {
      "kind": "security",
      "source_path": "PLATPHORM_NET_OPT.md",
      "line": 60,
      "text": "- `/.well-known/security.txt`"
    },
    {
      "kind": "security",
      "source_path": "PLATPHORM_NET_OPT.md",
      "line": 107,
      "text": "- [ ] `/.well-known/security.txt`"
    },
    {
      "kind": "security",
      "source_path": "PLATPHORM_NET_OPT.md",
      "line": 165,
      "text": "## 4.5 Security and Compliance"
    },
    {
      "kind": "security",
      "source_path": "PLATPHORM_NET_OPT.md",
      "line": 166,
      "text": "- Add explicit CSP and security header policy review"
    },
    {
      "kind": "security",
      "source_path": "PLATPHORM_NET_OPT.md",
      "line": 261,
      "text": "- `/.well-known/security.txt` -> `200`, text"
    },
    {
      "kind": "security",
      "source_path": "PLATPHORM_NET_OPT.md",
      "line": 335,
      "text": "- Contact/security links for trust and escalation"
    },
    {
      "kind": "security",
      "source_path": "PRODUCTION_READY.md",
      "line": 30,
      "text": "- ✅ No security vulnerabilities"
    },
    {
      "kind": "security",
      "source_path": "PRODUCTION_READY.md",
      "line": 64,
      "text": "- ✅ **security.txt** - Vulnerability disclosure (RFC 9116)"
    },
    {
      "kind": "security",
      "source_path": "PRODUCTION_READY.md",
      "line": 154,
      "text": "### Security"
    },
    {
      "kind": "security",
      "source_path": "PRODUCTION_READY.md",
      "line": 157,
      "text": "- ✅ Security headers configured"
    },
    {
      "kind": "security",
      "source_path": "PRODUCTION_READY.md",
      "line": 159,
      "text": "- ✅ Security.txt for disclosure"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 34,
      "text": "- **security.txt** - Security vulnerability disclosure"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 107,
      "text": "│   │   └── security.txt/        # Security disclosure"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 166,
      "text": "- **Security**: [/.well-known/security.txt](https://gta.platphormnews.com/.well-known/security.txt)"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 178,
      "text": "- 🔒 Security.txt and well-known URIs"
    },
    {
      "kind": "security",
      "source_path": "README.old.md",
      "line": 78,
      "text": "- well-known routes (`/.well-known/network.json`, `/.well-known/security.txt`)"
    },
    {
      "kind": "security",
      "source_path": "tests/well-known-routes.test.ts",
      "line": 2,
      "text": "import { GET as getSecurity } from \"../app/.well-known/security.txt/route\""
    },
    {
      "kind": "security",
      "source_path": "tests/well-known-routes.test.ts",
      "line": 16,
      "text": "it(\"returns security.txt with canonical and contacts\", async () => {"
    }
  ],
  "security": {
    "secret_risks": [],
    "unsafe_patterns": [
      {
        "name": "dangerously-set-html",
        "confidence": "medium",
        "evidence_paths": [
          ".Jules/sentinel.md",
          "app/faq/page.tsx",
          "app/jobs/senior-global-countdown-editor/page.tsx",
          "app/layout.tsx"
        ]
      }
    ],
    "sensitive_data_indicators": [
      {
        "name": "card",
        "confidence": "medium",
        "evidence_paths": [
          ".Jules/palette.md",
          "app/faq/page.tsx",
          "app/globals.css",
          "app/jobs/senior-global-countdown-editor/page.tsx",
          "app/layout.tsx",
          "app/platphorm-net-opt/page.tsx",
          "CHANGELOG.md",
          "components/disruption-stats.tsx",
          "components/footer.tsx",
          "components/industry-news.tsx",
          "components/shopify-joke.tsx",
          "components/trailer-section.tsx",
          "lib/metadata.ts",
          "lib/performance-config.ts",
          "package.json",
          "PLATPHORM_NET_OPT.md",
          "pnpm-lock.yaml",
          "PRODUCTION_READY.md",
          "README.md",
          "README.old.md"
        ]
      },
      {
        "name": "email",
        "confidence": "medium",
        "evidence_paths": [
          "app/.well-known/ai-plugin.json/route.ts",
          "app/layout.tsx"
        ]
      },
      {
        "name": "financial",
        "confidence": "medium",
        "evidence_paths": [
          "components/ui/unicode-icon.tsx"
        ]
      },
      {
        "name": "health",
        "confidence": "medium",
        "evidence_paths": [
          "app/api/docs/route.ts",
          "app/api/health/route.ts",
          "app/api/mcp/route.ts",
          "app/api/openapi.json/route.ts",
          "app/platphorm-net-opt.json/route.ts",
          "app/platphorm-net-opt/page.tsx",
          "lib/site-config.ts",
          "PLATPHORM_NET_OPT.md",
          "README.md",
          "README.old.md",
          "ROADMAP.md",
          "tests/network-readiness.test.ts"
        ]
      },
      {
        "name": "location",
        "confidence": "medium",
        "evidence_paths": [
          "app/.well-known/change-password/route.ts",
          "app/humans.txt/route.ts",
          "app/jobs/senior-global-countdown-editor/page.tsx",
          "app/layout.tsx",
          "next.config.mjs",
          "tests/web-standards.test.ts"
        ]
      },
      {
        "name": "password",
        "confidence": "medium",
        "evidence_paths": [
          "app/.well-known/change-password/route.ts",
          "CHANGELOG.md",
          "lib/performance-config.ts",
          "PRODUCTION_READY.md",
          "README.md",
          "tests/web-standards.test.ts"
        ]
      },
      {
        "name": "payment",
        "confidence": "medium",
        "evidence_paths": [
          "components/shopify-joke.tsx"
        ]
      },
      {
        "name": "pii",
        "confidence": "medium",
        "evidence_paths": [
          "pnpm-lock.yaml"
        ]
      },
      {
        "name": "token",
        "confidence": "medium",
        "evidence_paths": [
          "app/platphorm-net-opt/page.tsx",
          "PLATPHORM_NET_OPT.md",
          "README.old.md",
          "ROADMAP.md"
        ]
      }
    ]
  },
  "generated_at": "2026-05-16T16:44:08.868Z"
}
