{
  "schema_version": "1.0.0",
  "scanner": {
    "name": "global-capability-catalog",
    "version": "0.1.0"
  },
  "repo": {
    "id": "github-recent__mbarbine__platphorm-bbs",
    "name": "mbarbine__platphorm-bbs",
    "path": "/Users/bwm.barbinewarnermichael/Documents/github/repositories/github-recent/mbarbine__platphorm-bbs",
    "relative_path": "github-recent/mbarbine__platphorm-bbs",
    "remote_url": "git@github.com:mbarbine/platphorm-bbs.git",
    "default_branch": "main",
    "current_commit": "56efde8b0a67391a46ab314aa1920b81df25e747"
  },
  "languages": [
    {
      "language": "TypeScript",
      "files": 228,
      "bytes": 579813
    },
    {
      "language": "YAML",
      "files": 2,
      "bytes": 313178
    },
    {
      "language": "SQL",
      "files": 12,
      "bytes": 160514
    },
    {
      "language": "Markdown",
      "files": 18,
      "bytes": 73325
    },
    {
      "language": "JSON",
      "files": 7,
      "bytes": 16052
    },
    {
      "language": "CSS",
      "files": 2,
      "bytes": 12084
    },
    {
      "language": "JavaScript",
      "files": 5,
      "bytes": 8471
    },
    {
      "language": "Dockerfile",
      "files": 1,
      "bytes": 624
    }
  ],
  "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 .",
          "format": "prettier --write .",
          "format:check": "prettier --check .",
          "type-check": "tsc --noEmit",
          "test": "vitest",
          "test:watch": "vitest --watch",
          "test:coverage": "vitest --coverage",
          "test:ci": "vitest --run --coverage",
          "test:e2e": "playwright test",
          "test:e2e:ui": "playwright test --ui",
          "test:e2e:debug": "playwright test --debug",
          "test:load": "k6 run ./scripts/load-test.js"
        },
        "dependencies": {
          "@hookform/resolvers": "^3.9.1",
          "@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",
          "@supabase/ssr": "^0.10.2",
          "@supabase/supabase-js": "^2.103.0",
          "@upstash/redis": "^1.37.0",
          "@vercel/analytics": "1.6.1",
          "@vercel/blob": "^2.3.3",
          "autoprefixer": "^10.4.20",
          "bcryptjs": "^3.0.3",
          "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-intl": "^4.9.1",
          "next-themes": "^0.4.6",
          "react": "^19",
          "react-day-picker": "9.13.2",
          "react-dom": "^19",
          "react-hook-form": "^7.54.1",
          "react-resizable-panels": "^2.1.7",
          "recharts": "2.15.0",
          "sonner": "^1.7.1",
          "swr": "^2.4.1",
          "tailwind-merge": "^3.3.1",
          "vaul": "^1.1.2",
          "zod": "^3.24.1"
        },
        "dev_dependencies": {
          "@playwright/test": "^1.40.0",
          "@tailwindcss/postcss": "^4.2.0",
          "@testing-library/jest-dom": "^6.1.5",
          "@testing-library/react": "^14.1.2",
          "@types/node": "^22",
          "@types/react": "^19",
          "@types/react-dom": "^19",
          "@vitejs/plugin-react": "^4.2.1",
          "@vitest/ui": "^1.1.0",
          "eslint": "^8.56.0",
          "eslint-config-next": "16.2.0",
          "jsdom": "^23.0.0",
          "postcss": "^8.5",
          "prettier": "^3.1.1",
          "tailwindcss": "^4.2.0",
          "tw-animate-css": "1.3.3",
          "typescript": "5.7.3",
          "vitest": "^1.1.0"
        }
      }
    ]
  },
  "routes": {
    "api_routes": [
      {
        "route": "/announcements",
        "source_path": "app/api/announcements/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/auth/ip",
        "source_path": "app/api/auth/ip/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/logout",
        "source_path": "app/api/auth/logout/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/auth/user",
        "source_path": "app/api/auth/user/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/boards",
        "source_path": "app/api/boards/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/chat/[roomId]/messages",
        "source_path": "app/api/chat/[roomId]/messages/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/chat/[roomId]",
        "source_path": "app/api/chat/[roomId]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/chat/rooms",
        "source_path": "app/api/chat/rooms/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/cron/refresh",
        "source_path": "app/api/cron/refresh/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/docs",
        "source_path": "app/api/docs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/file-areas",
        "source_path": "app/api/file-areas/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/files/areas",
        "source_path": "app/api/files/areas/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/files/delete",
        "source_path": "app/api/files/delete/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE"
        ]
      },
      {
        "route": "/files/get",
        "source_path": "app/api/files/get/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/files/upload",
        "source_path": "app/api/files/upload/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/games",
        "source_path": "app/api/games/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": "/init",
        "source_path": "app/api/init/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",
          "POST"
        ]
      },
      {
        "route": "/telnet/ws",
        "source_path": "app/api/telnet/ws/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/activity",
        "source_path": "app/api/v1/activity/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/announcements",
        "source_path": "app/api/v1/announcements/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/ascii/convert",
        "source_path": "app/api/v1/ascii/convert/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/boards/[slug]",
        "source_path": "app/api/v1/boards/[slug]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/boards/[slug]/threads",
        "source_path": "app/api/v1/boards/[slug]/threads/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/boards",
        "source_path": "app/api/v1/boards/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/chat/rooms/[roomId]/messages",
        "source_path": "app/api/v1/chat/rooms/[roomId]/messages/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/chat/rooms",
        "source_path": "app/api/v1/chat/rooms/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/chat",
        "source_path": "app/api/v1/chat/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/files/[id]/download",
        "source_path": "app/api/v1/files/[id]/download/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/files/[id]",
        "source_path": "app/api/v1/files/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/files",
        "source_path": "app/api/v1/files/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/files/upload",
        "source_path": "app/api/v1/files/upload/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/games/[slug]",
        "source_path": "app/api/v1/games/[slug]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/games/[slug]/scores",
        "source_path": "app/api/v1/games/[slug]/scores/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/games",
        "source_path": "app/api/v1/games/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/info",
        "source_path": "app/api/v1/info/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/messages",
        "source_path": "app/api/v1/messages/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/portal",
        "source_path": "app/api/v1/portal/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/posts",
        "source_path": "app/api/v1/posts/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/presence",
        "source_path": "app/api/v1/presence/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/search",
        "source_path": "app/api/v1/search/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/services",
        "source_path": "app/api/v1/services/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/stats",
        "source_path": "app/api/v1/stats/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/threads/[id]/posts",
        "source_path": "app/api/v1/threads/[id]/posts/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/threads/[id]",
        "source_path": "app/api/v1/threads/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/threads",
        "source_path": "app/api/v1/threads/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/users/online",
        "source_path": "app/api/v1/users/online/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      }
    ],
    "app_routes": [
      {
        "route": "/announcements/[id]",
        "source_path": "app/announcements/[id]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/announcements",
        "source_path": "app/announcements/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/challenge",
        "source_path": "app/auth/challenge/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/login",
        "source_path": "app/auth/login/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/sign-up",
        "source_path": "app/auth/sign-up/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/boards/[slug]/[topicSlug]",
        "source_path": "app/boards/[slug]/[topicSlug]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/boards/[slug]",
        "source_path": "app/boards/[slug]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/boards/[slug]/threads/[id]",
        "source_path": "app/boards/[slug]/threads/[id]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/boards",
        "source_path": "app/boards/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/chat",
        "source_path": "app/chat/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/faq",
        "source_path": "app/faq/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/files",
        "source_path": "app/files/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/games/[id]",
        "source_path": "app/games/[id]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/games",
        "source_path": "app/games/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/messages",
        "source_path": "app/messages/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/portal",
        "source_path": "app/portal/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/privacy",
        "source_path": "app/privacy/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/search",
        "source_path": "app/search/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/settings",
        "source_path": "app/settings/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/sysop/announcements/new",
        "source_path": "app/sysop/announcements/new/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/sysop",
        "source_path": "app/sysop/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/telnet",
        "source_path": "app/telnet/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/terminal",
        "source_path": "app/terminal/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/terms",
        "source_path": "app/terms/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      }
    ]
  },
  "components": [
    {
      "name": "announcements",
      "kind": "ui-component",
      "source_path": "components/bbs/announcements.tsx"
    },
    {
      "name": "footer",
      "kind": "ui-component",
      "source_path": "components/bbs/footer.tsx"
    },
    {
      "name": "online-users",
      "kind": "ui-component",
      "source_path": "components/bbs/online-users.tsx"
    },
    {
      "name": "quick-stats",
      "kind": "ui-component",
      "source_path": "components/bbs/quick-stats.tsx"
    },
    {
      "name": "recent-activity",
      "kind": "ui-component",
      "source_path": "components/bbs/recent-activity.tsx"
    },
    {
      "name": "services-grid",
      "kind": "ui-component",
      "source_path": "components/bbs/services-grid.tsx"
    },
    {
      "name": "shell",
      "kind": "ui-component",
      "source_path": "components/bbs/shell.tsx"
    },
    {
      "name": "sidebar",
      "kind": "ui-component",
      "source_path": "components/bbs/sidebar.tsx"
    },
    {
      "name": "terminal-panel",
      "kind": "ui-component",
      "source_path": "components/bbs/terminal-panel.tsx"
    },
    {
      "name": "terminal-welcome",
      "kind": "ui-component",
      "source_path": "components/bbs/terminal-welcome.tsx"
    },
    {
      "name": "topbar",
      "kind": "ui-component",
      "source_path": "components/bbs/topbar.tsx"
    },
    {
      "name": "board-detail",
      "kind": "ui-component",
      "source_path": "components/boards/board-detail.tsx"
    },
    {
      "name": "boards-header",
      "kind": "ui-component",
      "source_path": "components/boards/boards-header.tsx"
    },
    {
      "name": "boards-list",
      "kind": "ui-component",
      "source_path": "components/boards/boards-list.tsx"
    },
    {
      "name": "boards-stats",
      "kind": "ui-component",
      "source_path": "components/boards/boards-stats.tsx"
    },
    {
      "name": "topic-view",
      "kind": "ui-component",
      "source_path": "components/boards/topic-view.tsx"
    },
    {
      "name": "topics-list",
      "kind": "ui-component",
      "source_path": "components/boards/topics-list.tsx"
    },
    {
      "name": "chat-interface",
      "kind": "ui-component",
      "source_path": "components/chat/chat-interface.tsx"
    },
    {
      "name": "chat-room-list",
      "kind": "ui-component",
      "source_path": "components/chat/chat-room-list.tsx"
    },
    {
      "name": "chat-room",
      "kind": "ui-component",
      "source_path": "components/chat/chat-room.tsx"
    },
    {
      "name": "chat-user-list",
      "kind": "ui-component",
      "source_path": "components/chat/chat-user-list.tsx"
    },
    {
      "name": "database-initializer",
      "kind": "ui-component",
      "source_path": "components/database-initializer.tsx"
    },
    {
      "name": "file-upload",
      "kind": "ui-component",
      "source_path": "components/files/file-upload.tsx"
    },
    {
      "name": "files-header",
      "kind": "ui-component",
      "source_path": "components/files/files-header.tsx"
    },
    {
      "name": "files-library",
      "kind": "ui-component",
      "source_path": "components/files/files-library.tsx"
    },
    {
      "name": "games-hub",
      "kind": "ui-component",
      "source_path": "components/games/games-hub.tsx"
    },
    {
      "name": "locale-switcher",
      "kind": "ui-component",
      "source_path": "components/locale-switcher.tsx"
    },
    {
      "name": "sysop-dashboard",
      "kind": "ui-component",
      "source_path": "components/sysop/sysop-dashboard.tsx"
    },
    {
      "name": "terminal-emulator",
      "kind": "ui-component",
      "source_path": "components/telnet/terminal-emulator.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": [
    {
      "name": "model",
      "kind": "schema-file",
      "source_path": "lib/bbs/model.ts"
    }
  ],
  "database": {
    "databases": [
      "redis"
    ],
    "schemas": [
      {
        "path": "scripts/001_schema.sql"
      }
    ],
    "migrations": []
  },
  "tests": [
    {
      "name": "bbs.spec.ts",
      "kind": "e2e",
      "source_path": "e2e/bbs.spec.ts"
    },
    {
      "name": "fingerprint.test.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/auth/fingerprint.test.ts"
    },
    {
      "name": "content.test.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/bbs/content.test.ts"
    },
    {
      "name": "discovery.test.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/bbs/discovery.test.ts"
    },
    {
      "name": "mcp.test.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/bbs/mcp.test.ts"
    },
    {
      "name": "redis.test.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/redis.test.ts"
    },
    {
      "name": "playwright.config.ts",
      "kind": "playwright",
      "source_path": "playwright.config.ts"
    }
  ],
  "ci": {
    "workflows": []
  },
  "containers": {
    "dockerfiles": [
      {
        "path": "Dockerfile"
      }
    ],
    "compose_files": []
  },
  "env": {
    "example_files": [
      {
        "path": ".env.example"
      }
    ],
    "variables": [
      {
        "name": "AI_GATEWAY_API_KEY",
        "source_paths": [
          "lib/bbs/model.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "BLOB_READ_WRITE_TOKEN",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "DATABASE_URL",
        "source_paths": [
          "lib/bbs/discovery.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "KV_REST_API_TOKEN",
        "source_paths": [
          ".env.example",
          "lib/bbs/discovery.ts",
          "lib/redis.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "KV_REST_API_URL",
        "source_paths": [
          ".env.example",
          "lib/bbs/discovery.ts",
          "lib/redis.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_APP_NAME",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_APP_URL",
        "source_paths": [
          "lib/actions/auth.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_ASCII_API_KEY",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "NEXT_PUBLIC_ASCII_API_URL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_ATLAS_API_KEY",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "NEXT_PUBLIC_ATLAS_API_URL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_DEBUG",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_DEFAULT_LOCALE",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_EMOJI_API_URL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_READER_API_URL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_SITE_URL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_SUPABASE_ANON_KEY",
        "source_paths": [
          ".env.example",
          "lib/supabase/client.ts",
          "lib/supabase/middleware.ts",
          "lib/supabase/server.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "NEXT_PUBLIC_SUPABASE_URL",
        "source_paths": [
          ".env.example",
          "lib/supabase/client.ts",
          "lib/supabase/middleware.ts",
          "lib/supabase/server.ts",
          "scripts/migrate.mjs",
          "scripts/setup-db.mjs"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_VERCEL_ANALYTICS_ID",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "NODE_ENV",
        "source_paths": [
          ".env.example",
          "app/layout.tsx",
          "lib/bbs/discovery.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "OPENAI_API_KEY",
        "source_paths": [
          "lib/bbs/model.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "PLATPHORM_API_KEY",
        "source_paths": [
          "lib/bbs/auth.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "PLATPHORM_REQUIRE_API_KEY",
        "source_paths": [
          "lib/bbs/auth.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "SUPABASE_SERVICE_ROLE_KEY",
        "source_paths": [
          "scripts/migrate.mjs",
          "scripts/setup-db.mjs"
        ],
        "likely_secret": true
      },
      {
        "name": "VERCEL_AI_GATEWAY_API_KEY",
        "source_paths": [
          "lib/bbs/model.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "VERCEL_ENV",
        "source_paths": [
          "lib/bbs/discovery.ts"
        ],
        "likely_secret": false
      }
    ]
  },
  "configs": [
    {
      "path": "eslint.config.mjs"
    },
    {
      "path": "next.config.mjs"
    },
    {
      "path": "package.json"
    },
    {
      "path": "pnpm-workspace.yaml"
    },
    {
      "path": "postcss.config.mjs"
    },
    {
      "path": "tsconfig.json"
    },
    {
      "path": "vercel.json"
    }
  ],
  "docs": {
    "readme_paths": [
      {
        "path": "README.md"
      }
    ],
    "doc_paths": [
      {
        "path": "docs/API.md"
      },
      {
        "path": "docs/ARCHITECTURE.md"
      },
      {
        "path": "docs/DESIGN.md"
      },
      {
        "path": "docs/QUICKSTART.md"
      },
      {
        "path": "docs/ROADMAP.md"
      },
      {
        "path": "docs/TESTING.md"
      }
    ],
    "llms_context_paths": []
  },
  "discovery_files": {
    "openapi": [],
    "mcp": [
      {
        "path": "app/api/mcp/route.ts"
      },
      {
        "path": "lib/bbs/mcp.ts"
      }
    ],
    "llms": [],
    "sitemaps": [],
    "feeds": [],
    "well_known": [
      {
        "path": "app/.well-known/agents.json/route.ts"
      },
      {
        "path": "app/.well-known/ai-plugin.json/route.ts"
      },
      {
        "path": "app/.well-known/mcp.json/route.ts"
      },
      {
        "path": "app/.well-known/security.txt/route.ts"
      },
      {
        "path": "app/.well-known/trust.json/route.ts"
      }
    ],
    "robots": [],
    "manifests": []
  },
  "integrations": [
    {
      "name": "OpenAI",
      "confidence": "medium",
      "evidence_paths": [
        "lib/bbs/model.ts",
        "package.json"
      ]
    },
    {
      "name": "PlatPhorm",
      "confidence": "medium",
      "evidence_paths": [
        "app/.well-known/ai-plugin.json/route.ts",
        "app/.well-known/trust.json/route.ts",
        "app/announcements/page.tsx",
        "app/api/docs/route.ts",
        "app/api/telnet/ws/route.ts",
        "app/api/v1/messages/route.ts",
        "app/games/[id]/page.tsx",
        "app/privacy/page.tsx",
        "lib/bbs/auth.ts",
        "lib/bbs/discovery.ts",
        "package.json",
        "README.md"
      ]
    },
    {
      "name": "Postgres",
      "confidence": "medium",
      "evidence_paths": [
        "lib/bbs/content.ts",
        "lib/bbs/discovery.ts",
        "package.json"
      ]
    },
    {
      "name": "Redis",
      "confidence": "medium",
      "evidence_paths": [
        "lib/redis.test.ts",
        "lib/redis.ts",
        "package.json",
        "pnpm-lock.yaml"
      ]
    },
    {
      "name": "Supabase",
      "confidence": "medium",
      "evidence_paths": [
        ".env.example",
        "docs/QUICKSTART.md",
        "lib/supabase/client.ts",
        "lib/supabase/middleware.ts",
        "lib/supabase/server.ts",
        "package.json",
        "pnpm-lock.yaml",
        "scripts/migrate.mjs",
        "scripts/setup-db.mjs",
        "TESTING_GUIDE.md"
      ]
    },
    {
      "name": "Vercel",
      "confidence": "medium",
      "evidence_paths": [
        ".env.example",
        "app/api/files/delete/route.ts",
        "app/layout.tsx",
        "lib/bbs/discovery.ts",
        "lib/bbs/model.ts",
        "package.json",
        "pnpm-lock.yaml"
      ]
    }
  ],
  "license": {
    "spdx": "MIT",
    "paths": [
      {
        "path": "LICENSE"
      }
    ]
  },
  "comments": [
    {
      "kind": "security",
      "source_path": ".github/pull_request_template.md",
      "line": 49,
      "text": "- [ ] No security issues introduced"
    },
    {
      "kind": "security",
      "source_path": ".github/pull_request_template.md",
      "line": 65,
      "text": "- [ ] Security: ✓ / ⚠️ / ❌"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/ai-plugin.json/route.ts",
      "line": 14,
      "text": "contact_email: 'security@platphormnews.com',"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 6,
      "text": "`Contact: mailto:security@platphormnews.com\\nPolicy: ${BBS_BASE_URL}/privacy\\nPreferred-Languages: en\\nCanonical: ${BBS_BASE_URL}/.well-known/security.txt\\n`,"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/trust.json/route.ts",
      "line": 28,
      "text": "securityContact: 'security@platphormnews.com',"
    },
    {
      "kind": "security",
      "source_path": "app/auth/challenge/page.tsx",
      "line": 20,
      "text": "<p className=\"text-sm text-muted-foreground\">Security Verification</p>"
    },
    {
      "kind": "security",
      "source_path": "app/auth/challenge/page.tsx",
      "line": 39,
      "text": "<p className=\"text-sm font-medium text-foreground\">Security Check Required</p>"
    },
    {
      "kind": "security",
      "source_path": "app/auth/challenge/page.tsx",
      "line": 73,
      "text": "<p>Your security is our priority</p>"
    },
    {
      "kind": "security",
      "source_path": "app/auth/login/page.tsx",
      "line": 163,
      "text": "<p>Your device fingerprint is automatically collected for security verification</p>"
    },
    {
      "kind": "security",
      "source_path": "app/telnet/page.tsx",
      "line": 67,
      "text": "<p className=\"text-sm font-medium\">Security</p>"
    },
    {
      "kind": "security",
      "source_path": "CHANGELOG.md",
      "line": 64,
      "text": "- Row Level Security policies"
    },
    {
      "kind": "security",
      "source_path": "CHANGELOG.md",
      "line": 83,
      "text": "- Security policy"
    },
    {
      "kind": "security",
      "source_path": "CHANGELOG.md",
      "line": 92,
      "text": "### Security"
    },
    {
      "kind": "security",
      "source_path": "CHANGELOG.md",
      "line": 95,
      "text": "- Enabled Row Level Security"
    },
    {
      "kind": "deprecated",
      "source_path": "CHANGELOG.md",
      "line": 113,
      "text": "- **Deprecated** for soon-to-be removed features"
    },
    {
      "kind": "security",
      "source_path": "CHANGELOG.md",
      "line": 116,
      "text": "- **Security** for vulnerability fixes"
    },
    {
      "kind": "security",
      "source_path": "docs/ARCHITECTURE.md",
      "line": 179,
      "text": "## Security"
    },
    {
      "kind": "security",
      "source_path": "docs/ARCHITECTURE.md",
      "line": 185,
      "text": "3. **Database** - Row Level Security (RLS) policies"
    },
    {
      "kind": "security",
      "source_path": "docs/QUICKSTART.md",
      "line": 166,
      "text": "- **Security**: Report privately to security@platphormnews.com"
    },
    {
      "kind": "security",
      "source_path": "docs/ROADMAP.md",
      "line": 96,
      "text": "### Security"
    },
    {
      "kind": "security",
      "source_path": "docs/TESTING.md",
      "line": 144,
      "text": "6. Security audit (npm audit, Snyk)"
    },
    {
      "kind": "security",
      "source_path": "IMPLEMENTATION_REPORT.md",
      "line": 80,
      "text": "### Security"
    },
    {
      "kind": "security",
      "source_path": "IMPLEMENTATION_REPORT.md",
      "line": 95,
      "text": "- **Challenge Flow**: Clear security messaging for unusual activity"
    },
    {
      "kind": "security",
      "source_path": "IMPLEMENTATION_REPORT.md",
      "line": 146,
      "text": "1. Configure Supabase Row Level Security (RLS) policies"
    },
    {
      "kind": "security",
      "source_path": "IMPLEMENTATION_SUMMARY.md",
      "line": 6,
      "text": "- ✅ Supabase integration with Row Level Security (RLS) policies"
    },
    {
      "kind": "security",
      "source_path": "IMPLEMENTATION_SUMMARY.md",
      "line": 58,
      "text": "- ✅ SECURITY.md with security best practices"
    },
    {
      "kind": "security",
      "source_path": "IMPLEMENTATION_SUMMARY.md",
      "line": 67,
      "text": "- ✅ GitHub Actions CI/CD pipeline with lint, type-check, tests, security"
    },
    {
      "kind": "security",
      "source_path": "IMPLEMENTATION_SUMMARY.md",
      "line": 120,
      "text": "## 🔐 Security Features"
    },
    {
      "kind": "security",
      "source_path": "IMPLEMENTATION_SUMMARY.md",
      "line": 122,
      "text": "- ✅ Row Level Security (RLS) on all tables"
    },
    {
      "kind": "security",
      "source_path": "IMPLEMENTATION_SUMMARY.md",
      "line": 194,
      "text": "- **SECURITY.md** - Security practices and vulnerability reporting"
    },
    {
      "kind": "security",
      "source_path": "IMPLEMENTATION_SUMMARY.md",
      "line": 210,
      "text": "- Review security audits (npm audit, Snyk)"
    },
    {
      "kind": "security",
      "source_path": "IMPLEMENTATION_SUMMARY.md",
      "line": 226,
      "text": "- **Security**: security@platphormnews.com"
    },
    {
      "kind": "todo",
      "source_path": "lib/auth/fingerprint.ts",
      "line": 213,
      "text": "// TODO: Also persist to database"
    },
    {
      "kind": "todo",
      "source_path": "lib/auth/fingerprint.ts",
      "line": 230,
      "text": "// TODO: Also remove from database"
    },
    {
      "kind": "security",
      "source_path": "lib/auth/fingerprint.ts",
      "line": 267,
      "text": "return { challenge: true, reason: 'Security check failed' }"
    },
    {
      "kind": "security",
      "source_path": "lib/bbs/content.test.ts",
      "line": 3,
      "text": "import { sanitizeText, sanitizeVercelMetadata } from './security'"
    },
    {
      "kind": "security",
      "source_path": "lib/bbs/discovery.ts",
      "line": 20,
      "text": "import { escapeXml } from './security'"
    },
    {
      "kind": "security",
      "source_path": "lib/bbs/discovery.ts",
      "line": 67,
      "text": "'/.well-known/security.txt',"
    },
    {
      "kind": "security",
      "source_path": "lib/bbs/discovery.ts",
      "line": 382,
      "text": "security: [],"
    },
    {
      "kind": "security",
      "source_path": "lib/bbs/discovery.ts",
      "line": 481,
      "text": "'/.well-known/security.txt',"
    },
    {
      "kind": "security",
      "source_path": "lib/bbs/rss.ts",
      "line": 3,
      "text": "import { escapeXml } from './security'"
    },
    {
      "kind": "security",
      "source_path": "messages/en.json",
      "line": 62,
      "text": "\"fingerprintDesc\": \"Your device fingerprint will be used for enhanced security\","
    },
    {
      "kind": "security",
      "source_path": "messages/en.json",
      "line": 163,
      "text": "\"security\": \"Security\""
    },
    {
      "kind": "security",
      "source_path": "messages/es.json",
      "line": 163,
      "text": "\"security\": \"Seguridad\""
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 574,
      "text": "deprecated: Use @eslint/config-array instead"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 582,
      "text": "deprecated: Use @eslint/object-schema instead"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 2820,
      "text": "deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options."
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 2986,
      "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": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 3092,
      "text": "deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful."
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 3857,
      "text": "deprecated: Rimraf versions prior to v4 are no longer supported"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 4307,
      "text": "deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 51,
      "text": "- `/.well-known/security.txt`"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_all_tables.sql",
      "line": 15,
      "text": "ALTER TABLE public.profiles ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_all_tables.sql",
      "line": 41,
      "text": "ALTER TABLE public.boards ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_all_tables.sql",
      "line": 63,
      "text": "ALTER TABLE public.topics ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_all_tables.sql",
      "line": 84,
      "text": "ALTER TABLE public.posts ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_all_tables.sql",
      "line": 106,
      "text": "ALTER TABLE public.chat_rooms ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_all_tables.sql",
      "line": 123,
      "text": "ALTER TABLE public.chat_messages ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_all_tables.sql",
      "line": 142,
      "text": "ALTER TABLE public.file_areas ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_all_tables.sql",
      "line": 161,
      "text": "ALTER TABLE public.files ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_all_tables.sql",
      "line": 184,
      "text": "ALTER TABLE public.games ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_all_tables.sql",
      "line": 200,
      "text": "ALTER TABLE public.announcements ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 34,
      "text": "ALTER TABLE public.profiles ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 72,
      "text": "ALTER TABLE public.boards ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 106,
      "text": "ALTER TABLE public.topics ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 138,
      "text": "ALTER TABLE public.posts ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 176,
      "text": "ALTER TABLE public.chat_rooms ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 205,
      "text": "ALTER TABLE public.chat_messages ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 236,
      "text": "ALTER TABLE public.file_areas ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 267,
      "text": "ALTER TABLE public.files ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 310,
      "text": "ALTER TABLE public.games ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 332,
      "text": "ALTER TABLE public.game_scores ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 367,
      "text": "ALTER TABLE public.announcements ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 400,
      "text": "ALTER TABLE public.user_sessions ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 430,
      "text": "ALTER TABLE public.notifications ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_full_migration.sql",
      "line": 457,
      "text": "ALTER TABLE public.rss_feeds ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_seed.sql",
      "line": 120,
      "text": "('00000000-0000-0000-0000-000000000001', 'How do I create an account?', 'Click the \"Sign Up\" button and choose a unique username. You will need to verify your device using our fingerprint system for enhanced security.', 'account', 2),"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_seed.sql",
      "line": 123,
      "text": "('00000000-0000-0000-0000-000000000001', 'Is my data secure?', 'Yes! We use device fingerprinting for authentication, encrypted connections, and follow security best practices to protect your data.', 'security', 5)"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 1,
      "text": "-- Platphorm BBS Row Level Security Policies"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 6,
      "text": "ALTER TABLE tenants ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 7,
      "text": "ALTER TABLE users ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 8,
      "text": "ALTER TABLE boards ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 9,
      "text": "ALTER TABLE posts ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 10,
      "text": "ALTER TABLE post_likes ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 11,
      "text": "ALTER TABLE messages ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 12,
      "text": "ALTER TABLE chat_rooms ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 13,
      "text": "ALTER TABLE chat_room_members ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 14,
      "text": "ALTER TABLE chat_messages ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 15,
      "text": "ALTER TABLE file_areas ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 16,
      "text": "ALTER TABLE files ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 17,
      "text": "ALTER TABLE games ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 18,
      "text": "ALTER TABLE game_scores ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 19,
      "text": "ALTER TABLE announcements ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 20,
      "text": "ALTER TABLE platphorm_services ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 21,
      "text": "ALTER TABLE user_sessions ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 22,
      "text": "ALTER TABLE user_follows ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 23,
      "text": "ALTER TABLE notifications ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 24,
      "text": "ALTER TABLE audit_logs ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 25,
      "text": "ALTER TABLE webhook_endpoints ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 26,
      "text": "ALTER TABLE webhook_deliveries ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 27,
      "text": "ALTER TABLE api_keys ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 28,
      "text": "ALTER TABLE faqs ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 29,
      "text": "ALTER TABLE jobs ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 30,
      "text": "ALTER TABLE badges ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 31,
      "text": "ALTER TABLE user_badges ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 32,
      "text": "ALTER TABLE reports ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 45,
      "text": "$$ LANGUAGE SQL SECURITY DEFINER;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 55,
      "text": "$$ LANGUAGE SQL SECURITY DEFINER;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_rls_policies.sql",
      "line": 65,
      "text": "$$ LANGUAGE SQL SECURITY DEFINER;"
    },
    {
      "kind": "security",
      "source_path": "scripts/004_user_trigger.sql",
      "line": 6,
      "text": "SECURITY DEFINER"
    },
    {
      "kind": "security",
      "source_path": "scripts/004_user_trigger.sql",
      "line": 114,
      "text": "$$ LANGUAGE plpgsql SECURITY DEFINER;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 490,
      "text": "ALTER TABLE tenants ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 491,
      "text": "ALTER TABLE users ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 492,
      "text": "ALTER TABLE boards ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 493,
      "text": "ALTER TABLE posts ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 494,
      "text": "ALTER TABLE post_likes ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 495,
      "text": "ALTER TABLE chat_rooms ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 496,
      "text": "ALTER TABLE chat_room_members ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 497,
      "text": "ALTER TABLE chat_messages ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 498,
      "text": "ALTER TABLE file_areas ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 499,
      "text": "ALTER TABLE files ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 500,
      "text": "ALTER TABLE games ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 501,
      "text": "ALTER TABLE game_scores ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 502,
      "text": "ALTER TABLE announcements ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 503,
      "text": "ALTER TABLE platphorm_services ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 504,
      "text": "ALTER TABLE notifications ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 505,
      "text": "ALTER TABLE audit_logs ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 506,
      "text": "ALTER TABLE api_keys ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 507,
      "text": "ALTER TABLE faqs ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 508,
      "text": "ALTER TABLE badges ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 509,
      "text": "ALTER TABLE user_badges ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 520,
      "text": "$$ LANGUAGE SQL SECURITY DEFINER;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 529,
      "text": "$$ LANGUAGE SQL SECURITY DEFINER;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 538,
      "text": "$$ LANGUAGE SQL SECURITY DEFINER;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 674,
      "text": "SECURITY DEFINER"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_full_setup.sql",
      "line": 859,
      "text": "('00000000-0000-0000-0000-000000000001', 'Is my data secure?', 'Yes! We use encrypted connections and follow security best practices to protect your data.', 'security', 5)"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_create_tables.sql",
      "line": 143,
      "text": "-- Enable Row Level Security"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_create_tables.sql",
      "line": 144,
      "text": "ALTER TABLE public.profiles ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_create_tables.sql",
      "line": 145,
      "text": "ALTER TABLE public.boards ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_create_tables.sql",
      "line": 146,
      "text": "ALTER TABLE public.posts ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_create_tables.sql",
      "line": 147,
      "text": "ALTER TABLE public.replies ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_create_tables.sql",
      "line": 148,
      "text": "ALTER TABLE public.chat_rooms ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_create_tables.sql",
      "line": 149,
      "text": "ALTER TABLE public.messages ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_create_tables.sql",
      "line": 150,
      "text": "ALTER TABLE public.file_areas ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_create_tables.sql",
      "line": 151,
      "text": "ALTER TABLE public.files ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_create_tables.sql",
      "line": 152,
      "text": "ALTER TABLE public.games ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_create_tables.sql",
      "line": 153,
      "text": "ALTER TABLE public.leaderboard ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_create_tables.sql",
      "line": 154,
      "text": "ALTER TABLE public.announcements ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_create_tables.sql",
      "line": 155,
      "text": "ALTER TABLE public.presence ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/012_seed_data.sql",
      "line": 40,
      "text": "SECURITY DEFINER"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 1,
      "text": "# Security Policy"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 12,
      "text": "We take the security of Platphorm BBS seriously. If you believe you have found a security vulnerability, please report it to us as described below."
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 16,
      "text": "- Open a public GitHub issue for security vulnerabilities"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 22,
      "text": "1. **Email us** at security@platphormnews.com with details of the vulnerability"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 39,
      "text": "We offer rewards for qualifying security vulnerabilities:"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 48,
      "text": "## Security Measures"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 62,
      "text": "- Row Level Security (RLS) policies"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 74,
      "text": "### Code Security"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 78,
      "text": "- Regular security audits"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 81,
      "text": "## Security Headers"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 83,
      "text": "We implement the following security headers:"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 86,
      "text": "Strict-Transport-Security: max-age=31536000; includeSubDomains"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 90,
      "text": "Content-Security-Policy: default-src 'self'; ..."
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 104,
      "text": "- Security issues: security@platphormnews.com"
    },
    {
      "kind": "security",
      "source_path": "TESTING_GUIDE.md",
      "line": 148,
      "text": "## Security Checklist"
    },
    {
      "kind": "security",
      "source_path": "TESTING_GUIDE.md",
      "line": 266,
      "text": "- [ ] Security audit passed"
    }
  ],
  "security": {
    "secret_risks": [],
    "unsafe_patterns": [
      {
        "name": "child-process-exec",
        "confidence": "medium",
        "evidence_paths": [
          "components/telnet/terminal-emulator.tsx"
        ]
      },
      {
        "name": "dangerously-set-html",
        "confidence": "medium",
        "evidence_paths": [
          "app/faq/page.tsx",
          "app/layout.tsx",
          "components/ui/chart.tsx"
        ]
      },
      {
        "name": "sql-injection-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "lib/bbs/security.ts"
        ]
      },
      {
        "name": "ssrf-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "components/bbs/services-grid.tsx",
          "components/boards/board-detail.tsx",
          "components/boards/topic-view.tsx",
          "components/boards/topics-list.tsx",
          "components/files/files-library.tsx",
          "lib/hooks/use-data.ts"
        ]
      }
    ],
    "sensitive_data_indicators": [
      {
        "name": "api_key",
        "confidence": "medium",
        "evidence_paths": [
          ".env.example",
          "app/.well-known/ai-plugin.json/route.ts",
          "app/.well-known/trust.json/route.ts",
          "app/announcements/page.tsx",
          "app/api/docs/route.ts",
          "app/api/telnet/ws/route.ts",
          "app/api/v1/messages/route.ts",
          "app/games/[id]/page.tsx",
          "app/privacy/page.tsx",
          "app/telnet/page.tsx",
          "app/terms/page.tsx",
          "components/bbs/topbar.tsx",
          "components/boards/board-detail.tsx",
          "components/boards/boards-header.tsx",
          "components/boards/topic-view.tsx",
          "components/chat/chat-room-list.tsx",
          "components/chat/chat-room.tsx",
          "components/files/files-header.tsx",
          "components/files/files-library.tsx",
          "components/sysop/sysop-dashboard.tsx"
        ]
      },
      {
        "name": "card",
        "confidence": "medium",
        "evidence_paths": [
          "app/auth/challenge/page.tsx",
          "app/auth/login/page.tsx",
          "app/auth/sign-up/page.tsx",
          "app/globals.css",
          "app/layout.tsx",
          "app/portal/page.tsx",
          "CHANGELOG.md",
          "components/bbs/footer.tsx",
          "components/bbs/index.ts",
          "components/bbs/quick-stats.tsx",
          "components/bbs/terminal-panel.tsx",
          "components/bbs/topbar.tsx",
          "components/boards/board-detail.tsx",
          "components/boards/boards-stats.tsx",
          "components/boards/topic-view.tsx",
          "components/chat/chat-interface.tsx",
          "components/files/files-library.tsx",
          "components/games/games-hub.tsx",
          "components/locale-switcher.tsx",
          "components/sysop/sysop-dashboard.tsx"
        ]
      },
      {
        "name": "email",
        "confidence": "medium",
        "evidence_paths": [
          "app/.well-known/ai-plugin.json/route.ts",
          "app/auth/sign-up/page.tsx",
          "app/layout.tsx",
          "CONTRIBUTING.md",
          "IMPLEMENTATION_REPORT.md",
          "lib/actions/auth.ts",
          "lib/types/database.ts",
          "messages/en.json",
          "messages/es.json",
          "scripts/001_core_tables.sql",
          "scripts/001_schema.sql",
          "scripts/004_user_trigger.sql",
          "scripts/006_full_setup.sql",
          "scripts/012_seed_data.sql",
          "SECURITY.md"
        ]
      },
      {
        "name": "fingerprint",
        "confidence": "medium",
        "evidence_paths": [
          "app/auth/login/page.tsx",
          "CHANGELOG.md",
          "components/bbs/topbar.tsx",
          "docs/ARCHITECTURE.md",
          "docs/ROADMAP.md",
          "docs/TESTING.md",
          "IMPLEMENTATION_REPORT.md",
          "IMPLEMENTATION_SUMMARY.md",
          "lib/actions/auth.ts",
          "lib/api/atlas.ts",
          "lib/auth/fingerprint.test.ts",
          "lib/auth/fingerprint.ts",
          "lib/types/database.ts",
          "messages/en.json",
          "messages/es.json",
          "scripts/001_core_tables.sql",
          "scripts/001_schema.sql",
          "scripts/002_full_migration.sql",
          "scripts/002_seed.sql",
          "scripts/004_user_trigger.sql"
        ]
      },
      {
        "name": "health",
        "confidence": "medium",
        "evidence_paths": [
          "app/api/cron/refresh/route.ts",
          "app/api/docs/route.ts",
          "app/api/health/route.ts",
          "app/api/v1/health/route.ts",
          "app/api/v1/services/route.ts",
          "app/robots.ts",
          "CHANGELOG.md",
          "components/bbs/services-grid.tsx",
          "docs/API.md",
          "docs/ARCHITECTURE.md",
          "IMPLEMENTATION_SUMMARY.md",
          "lib/api/ascii.ts",
          "lib/api/atlas.ts",
          "lib/api/services.ts",
          "lib/bbs/discovery.ts",
          "lib/bbs/mcp.ts",
          "lib/types/database.ts",
          "README.md",
          "scripts/001_core_tables.sql",
          "scripts/001_schema.sql"
        ]
      },
      {
        "name": "ip address",
        "confidence": "medium",
        "evidence_paths": [
          "lib/api/atlas.ts",
          "TESTING_GUIDE.md"
        ]
      },
      {
        "name": "location",
        "confidence": "medium",
        "evidence_paths": [
          "app/auth/challenge/page.tsx",
          "components/bbs/topbar.tsx",
          "components/boards/boards-header.tsx",
          "components/boards/topic-view.tsx",
          "lib/auth/fingerprint.ts",
          "lib/types/database.ts",
          "scripts/001_core_tables.sql",
          "scripts/001_schema.sql",
          "scripts/002_full_migration.sql",
          "scripts/006_full_setup.sql",
          "SECURITY.md"
        ]
      },
      {
        "name": "password",
        "confidence": "medium",
        "evidence_paths": [
          "app/auth/sign-up/page.tsx",
          "docs/ARCHITECTURE.md",
          "IMPLEMENTATION_REPORT.md",
          "IMPLEMENTATION_SUMMARY.md",
          "lib/actions/auth.ts",
          "lib/auth/password.ts",
          "lib/bbs/security.ts",
          "messages/en.json",
          "messages/es.json",
          "scripts/006_full_setup.sql",
          "SECURITY.md",
          "TESTING_GUIDE.md"
        ]
      },
      {
        "name": "pii",
        "confidence": "medium",
        "evidence_paths": [
          "pnpm-lock.yaml"
        ]
      },
      {
        "name": "secret-like environment variables",
        "confidence": "medium",
        "evidence_paths": [
          "package.json"
        ]
      },
      {
        "name": "session_token",
        "confidence": "medium",
        "evidence_paths": [
          "lib/types/database.ts",
          "scripts/001_core_tables.sql",
          "scripts/001_schema.sql",
          "scripts/002_full_migration.sql"
        ]
      },
      {
        "name": "token",
        "confidence": "medium",
        "evidence_paths": [
          ".env.example",
          "app/globals.css",
          "CONTRIBUTING.md",
          "docs/API.md",
          "docs/QUICKSTART.md",
          "IMPLEMENTATION_SUMMARY.md",
          "lib/actions/auth.ts",
          "lib/bbs/discovery.ts",
          "lib/bbs/security.ts",
          "lib/redis.ts",
          "lib/types/database.ts",
          "pnpm-lock.yaml",
          "scripts/001_core_tables.sql",
          "scripts/001_schema.sql",
          "scripts/002_full_migration.sql",
          "SECURITY.md",
          "TESTING_GUIDE.md"
        ]
      }
    ]
  },
  "generated_at": "2026-05-16T16:44:13.024Z"
}
