{
  "schema_version": "1.0.0",
  "scanner": {
    "name": "global-capability-catalog",
    "version": "0.1.0"
  },
  "repo": {
    "id": "github-recent__mbarbine__mailthing-client",
    "name": "mbarbine__mailthing-client",
    "path": "/Users/bwm.barbinewarnermichael/Documents/github/repositories/github-recent/mbarbine__mailthing-client",
    "relative_path": "github-recent/mbarbine__mailthing-client",
    "remote_url": "git@github.com:mbarbine/mailthing-client.git",
    "default_branch": "main",
    "current_commit": "38c220bc48c81d576113e29e22f5384981a65e52"
  },
  "languages": [
    {
      "language": "TypeScript",
      "files": 32,
      "bytes": 120422
    },
    {
      "language": "YAML",
      "files": 1,
      "bytes": 115307
    },
    {
      "language": "JavaScript",
      "files": 3,
      "bytes": 12752
    },
    {
      "language": "CSS",
      "files": 2,
      "bytes": 5601
    },
    {
      "language": "JSON",
      "files": 2,
      "bytes": 2240
    },
    {
      "language": "HTML",
      "files": 1,
      "bytes": 1576
    },
    {
      "language": "Markdown",
      "files": 1,
      "bytes": 785
    }
  ],
  "frameworks": [
    {
      "name": "Express",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "React",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "Vite",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    }
  ],
  "packages": {
    "package_manager": "pnpm",
    "manifests": [
      {
        "path": "package.json",
        "name": "vite-react",
        "version": "0.0.0",
        "scripts": {
          "dev": "vite",
          "build": "tsc && vite build",
          "type-check": "tsc --noEmit",
          "lint": "eslint .",
          "preview": "vite preview",
          "clean": "rm -rf dist && rm -rf node_modules"
        },
        "dependencies": {
          "@auth0/auth0-react": "^2.2.4",
          "@stripe/react-stripe-js": "^3.1.1",
          "@stripe/stripe-js": "^5.4.0",
          "@types/node": "^22.10.2",
          "@vercel/analytics": "^1.4.1",
          "axios": "^1.4.0",
          "clean": "^4.0.2",
          "cors": "^2.8.5",
          "express": "^4.21.2",
          "express-serve-static-core": "^0.1.1",
          "jsonwebtoken": "^9.0.2",
          "jspdf": "^2.5.2",
          "pdf-lib": "^1.17.1",
          "react": "^18.3.1",
          "react-dom": "^18.3.1",
          "request": "2.56.0",
          "stripe": "^17.5.0"
        },
        "dev_dependencies": {
          "@eslint/js": "^9.17.0",
          "@types/cors": "^2.8.17",
          "@types/express": "^5.0.0",
          "@types/jsonwebtoken": "^9.0.7",
          "@types/react": "^18.3.18",
          "@types/react-dom": "^18.3.5",
          "@vitejs/plugin-react": "^4.3.4",
          "eslint": "^9.17.0",
          "eslint-plugin-react-hooks": "^5.1.0",
          "eslint-plugin-react-refresh": "^0.4.16",
          "globals": "^15.14.0",
          "typescript": "^5.7.2",
          "typescript-eslint": "^8.18.1",
          "vite": "^6.0.5"
        }
      }
    ]
  },
  "routes": {
    "api_routes": [],
    "app_routes": []
  },
  "components": [
    {
      "name": "Addresses",
      "kind": "ui-component",
      "source_path": "src/components/Addresses.tsx"
    },
    {
      "name": "Calc",
      "kind": "ui-component",
      "source_path": "src/components/Calc.tsx"
    },
    {
      "name": "Campaigns",
      "kind": "ui-component",
      "source_path": "src/components/Campaigns.tsx"
    },
    {
      "name": "CreditsCheckout",
      "kind": "ui-component",
      "source_path": "src/components/CreditsCheckout.tsx"
    },
    {
      "name": "Home",
      "kind": "ui-component",
      "source_path": "src/components/Home.tsx"
    },
    {
      "name": "Login",
      "kind": "ui-component",
      "source_path": "src/components/Login.tsx"
    },
    {
      "name": "Logout",
      "kind": "ui-component",
      "source_path": "src/components/Logout.tsx"
    },
    {
      "name": "NewUserFlow",
      "kind": "ui-component",
      "source_path": "src/components/NewUserFlow.tsx"
    },
    {
      "name": "PaymentFlow",
      "kind": "ui-component",
      "source_path": "src/components/PaymentFlow.tsx"
    },
    {
      "name": "PaymentForm",
      "kind": "ui-component",
      "source_path": "src/components/PaymentForm.tsx"
    },
    {
      "name": "PriceCalculator",
      "kind": "ui-component",
      "source_path": "src/components/PriceCalculator.tsx"
    },
    {
      "name": "Profile",
      "kind": "ui-component",
      "source_path": "src/components/Profile.tsx"
    },
    {
      "name": "ReturningUserDashboard",
      "kind": "ui-component",
      "source_path": "src/components/ReturningUserDashboard.tsx"
    },
    {
      "name": "SendLetter",
      "kind": "ui-component",
      "source_path": "src/components/SendLetter.tsx"
    },
    {
      "name": "SendPostcard",
      "kind": "ui-component",
      "source_path": "src/components/SendPostcard.tsx"
    },
    {
      "name": "Tracking",
      "kind": "ui-component",
      "source_path": "src/components/Tracking.tsx"
    },
    {
      "name": "UserPortal",
      "kind": "ui-component",
      "source_path": "src/components/UserPortal.tsx"
    }
  ],
  "data_models": [],
  "database": {
    "databases": [],
    "schemas": [],
    "migrations": []
  },
  "tests": [],
  "ci": {
    "workflows": []
  },
  "containers": {
    "dockerfiles": [],
    "compose_files": []
  },
  "env": {
    "example_files": [
      {
        "path": ".env"
      }
    ],
    "variables": [
      {
        "name": "CREDENTIALS_FILE",
        "source_paths": [
          ".env"
        ],
        "likely_secret": true
      },
      {
        "name": "GMAIL_API_KEY",
        "source_paths": [
          ".env"
        ],
        "likely_secret": true
      },
      {
        "name": "GOOGLE_CLIENT_ID",
        "source_paths": [
          ".env"
        ],
        "likely_secret": false
      },
      {
        "name": "GOOGLE_CLIENT_SECRET",
        "source_paths": [
          ".env"
        ],
        "likely_secret": true
      },
      {
        "name": "MODE",
        "source_paths": [
          "src/utils/logger.js",
          "src/utils/logger.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "OPENAI_API_KEY",
        "source_paths": [
          ".env"
        ],
        "likely_secret": true
      },
      {
        "name": "OPENAI_ORG",
        "source_paths": [
          ".env"
        ],
        "likely_secret": false
      },
      {
        "name": "STANNP_PRIV_API_KEY",
        "source_paths": [
          ".env"
        ],
        "likely_secret": true
      },
      {
        "name": "STRIPE_SECRET_KEY",
        "source_paths": [
          "src/api/create-payment-intent.ts",
          "src/api/get-credits.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "TOKEN_FILE",
        "source_paths": [
          ".env"
        ],
        "likely_secret": true
      },
      {
        "name": "VITE_AUTH0_AUDIENCE",
        "source_paths": [
          "src/api/auth/auth0.ts",
          "src/config/auth0.ts",
          "src/main.tsx"
        ],
        "likely_secret": true
      },
      {
        "name": "VITE_AUTH0_CLIENT_ID",
        "source_paths": [
          "src/api/auth/auth0.ts",
          "src/config/auth0.ts",
          "src/main.tsx"
        ],
        "likely_secret": true
      },
      {
        "name": "VITE_AUTH0_CLIENT_SECRET",
        "source_paths": [
          "src/main.tsx"
        ],
        "likely_secret": true
      },
      {
        "name": "VITE_AUTH0_DOMAIN",
        "source_paths": [
          "src/api/auth/auth0.ts",
          "src/config/auth0.ts",
          "src/main.tsx"
        ],
        "likely_secret": true
      },
      {
        "name": "VITE_MAILTHING_API_BASE",
        "source_paths": [
          "src/api.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VITE_STANNP_API_BASE",
        "source_paths": [
          ".env"
        ],
        "likely_secret": false
      },
      {
        "name": "VITE_STANNP_API_KEY",
        "source_paths": [
          ".env"
        ],
        "likely_secret": true
      },
      {
        "name": "VITE_STRIPE_PUBLIC_KEY",
        "source_paths": [
          "src/components/PaymentFlow.tsx"
        ],
        "likely_secret": true
      }
    ]
  },
  "configs": [
    {
      "path": "package.json"
    },
    {
      "path": "tsconfig.json"
    },
    {
      "path": "vite.config.ts"
    }
  ],
  "docs": {
    "readme_paths": [
      {
        "path": "README.md"
      }
    ],
    "doc_paths": [],
    "llms_context_paths": []
  },
  "discovery_files": {
    "openapi": [],
    "mcp": [],
    "llms": [],
    "sitemaps": [],
    "feeds": [],
    "well_known": [],
    "robots": [],
    "manifests": []
  },
  "integrations": [
    {
      "name": "Gmail",
      "confidence": "medium",
      "evidence_paths": [
        ".env",
        "package.json"
      ]
    },
    {
      "name": "Google",
      "confidence": "medium",
      "evidence_paths": [
        ".env",
        "package.json"
      ]
    },
    {
      "name": "OpenAI",
      "confidence": "medium",
      "evidence_paths": [
        ".env",
        "package.json"
      ]
    },
    {
      "name": "Stannp",
      "confidence": "medium",
      "evidence_paths": [
        ".env",
        "package.json",
        "src/env.d.ts"
      ]
    },
    {
      "name": "Stripe",
      "confidence": "medium",
      "evidence_paths": [
        "package.json",
        "pnpm-lock.yaml",
        "src/api/create-payment-intent.ts",
        "src/api/get-credits.ts",
        "src/components/PaymentFlow.tsx",
        "src/components/PaymentForm.tsx",
        "src/env.d.ts"
      ]
    },
    {
      "name": "Vercel",
      "confidence": "medium",
      "evidence_paths": [
        "package.json",
        "pnpm-lock.yaml",
        "src/main.tsx"
      ]
    }
  ],
  "license": {
    "spdx": null,
    "paths": []
  },
  "comments": [
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 780,
      "text": "deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this "
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 898,
      "text": "deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this "
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 1188,
      "text": "deprecated: this library is no longer supported"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 1210,
      "text": "deprecated: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues."
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 1215,
      "text": "deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this "
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 1455,
      "text": "deprecated: Use uuid module instead"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 1595,
      "text": "deprecated: request has been deprecated, see https://github.com/request/request/issues/3142"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 1676,
      "text": "deprecated: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues."
    }
  ],
  "security": {
    "secret_risks": [
      {
        "kind": "openai-key",
        "source_path": ".env",
        "line": 4,
        "redacted_sample": "OPENAI_API_KEY= [REDACTED]"
      },
      {
        "kind": "openai-key",
        "source_path": ".env",
        "line": 13,
        "redacted_sample": "openai_api_key= [REDACTED]"
      }
    ],
    "unsafe_patterns": [
      {
        "name": "ssrf-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "src/api.ts"
        ]
      }
    ],
    "sensitive_data_indicators": [
      {
        "name": "api_key",
        "confidence": "medium",
        "evidence_paths": [
          ".env",
          "src/env.d.ts"
        ]
      },
      {
        "name": "card",
        "confidence": "medium",
        "evidence_paths": [
          "archive/AltHome.tsx",
          "index.html",
          "src/api.ts",
          "src/App.tsx",
          "src/components/Calc.tsx",
          "src/components/PaymentFlow.tsx",
          "src/components/PaymentForm.tsx",
          "src/components/PriceCalculator.tsx",
          "src/components/SendPostcard.tsx",
          "src/components/Tracking.tsx"
        ]
      },
      {
        "name": "email",
        "confidence": "medium",
        "evidence_paths": [
          ".env",
          "archive/AltHome.tsx",
          "index.html",
          "src/api.ts",
          "src/api/auth/auth0.ts",
          "src/App.tsx",
          "src/components/CreditsCheckout.tsx",
          "src/components/Home.tsx",
          "src/components/NewUserFlow.tsx",
          "src/components/PaymentFlow.tsx",
          "src/components/ReturningUserDashboard.tsx",
          "src/components/SendLetter.tsx",
          "src/components/UserPortal.tsx",
          "src/config/auth0.ts",
          "src/context/userContext.js",
          "src/context/userContext.tsx",
          "src/main.tsx"
        ]
      },
      {
        "name": "location",
        "confidence": "medium",
        "evidence_paths": [
          "src/api/auth/auth0.ts",
          "src/App.tsx",
          "src/components/Logout.tsx",
          "src/config/auth0.ts",
          "src/main.tsx"
        ]
      },
      {
        "name": "oauth",
        "confidence": "medium",
        "evidence_paths": [
          "pnpm-lock.yaml"
        ]
      },
      {
        "name": "payment",
        "confidence": "medium",
        "evidence_paths": [
          "src/api/create-payment-intent.ts",
          "src/App.tsx",
          "src/components/NewUserFlow.tsx",
          "src/components/PaymentFlow.tsx",
          "src/components/PaymentForm.tsx",
          "src/components/ReturningUserDashboard.tsx"
        ]
      },
      {
        "name": "secret-like environment variables",
        "confidence": "medium",
        "evidence_paths": [
          "package.json"
        ]
      },
      {
        "name": "token",
        "confidence": "medium",
        "evidence_paths": [
          ".env",
          "package.json",
          "pnpm-lock.yaml",
          "src/api.ts",
          "src/api/get-credits.ts",
          "src/components/Addresses.tsx",
          "src/components/CreditsCheckout.tsx",
          "src/components/ReturningUserDashboard.tsx",
          "src/context/userContext.js",
          "src/context/userContext.tsx"
        ]
      }
    ]
  },
  "generated_at": "2026-05-16T16:44:10.330Z"
}
