{
  "schema_version": "1.0.0",
  "scanner": {
    "name": "global-capability-catalog",
    "version": "0.1.0"
  },
  "repo": {
    "id": "github-recent__mbarbine__beer-museum-manager-www",
    "name": "mbarbine__beer-museum-manager-www",
    "path": "/Users/bwm.barbinewarnermichael/Documents/github/repositories/github-recent/mbarbine__beer-museum-manager-www",
    "relative_path": "github-recent/mbarbine__beer-museum-manager-www",
    "remote_url": "git@github.com:mbarbine/beer-museum-manager-www.git",
    "default_branch": "main",
    "current_commit": "878d2b886238de212cabf1e7cb63fb632a68bd49"
  },
  "languages": [
    {
      "language": "TypeScript",
      "files": 170,
      "bytes": 1078756
    },
    {
      "language": "YAML",
      "files": 2,
      "bytes": 252137
    },
    {
      "language": "SQL",
      "files": 23,
      "bytes": 153687
    },
    {
      "language": "Markdown",
      "files": 4,
      "bytes": 20926
    },
    {
      "language": "CSS",
      "files": 2,
      "bytes": 8269
    },
    {
      "language": "JSON",
      "files": 4,
      "bytes": 4182
    },
    {
      "language": "JavaScript",
      "files": 2,
      "bytes": 817
    }
  ],
  "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"
      ]
    }
  ],
  "packages": {
    "package_manager": "pnpm",
    "manifests": [
      {
        "path": "package.json",
        "name": "beer-museum-manager",
        "version": "0.1.0",
        "scripts": {
          "build": "next build",
          "dev": "next dev",
          "lint": "next lint",
          "start": "next start"
        },
        "dependencies": {
          "@hookform/resolvers": "^3.10.0",
          "@radix-ui/react-accordion": "1.2.2",
          "@radix-ui/react-alert-dialog": "1.1.4",
          "@radix-ui/react-aspect-ratio": "1.1.1",
          "@radix-ui/react-avatar": "latest",
          "@radix-ui/react-checkbox": "latest",
          "@radix-ui/react-collapsible": "1.1.2",
          "@radix-ui/react-context-menu": "2.2.4",
          "@radix-ui/react-dialog": "latest",
          "@radix-ui/react-dropdown-menu": "latest",
          "@radix-ui/react-hover-card": "1.1.4",
          "@radix-ui/react-label": "latest",
          "@radix-ui/react-menubar": "1.1.4",
          "@radix-ui/react-navigation-menu": "1.2.3",
          "@radix-ui/react-popover": "1.1.4",
          "@radix-ui/react-progress": "latest",
          "@radix-ui/react-radio-group": "1.2.2",
          "@radix-ui/react-scroll-area": "latest",
          "@radix-ui/react-select": "latest",
          "@radix-ui/react-separator": "latest",
          "@radix-ui/react-slider": "1.2.2",
          "@radix-ui/react-slot": "latest",
          "@radix-ui/react-switch": "latest",
          "@radix-ui/react-tabs": "latest",
          "@radix-ui/react-toast": "latest",
          "@radix-ui/react-toggle": "1.1.1",
          "@radix-ui/react-toggle-group": "1.1.1",
          "@radix-ui/react-tooltip": "1.1.6",
          "@supabase/ssr": "latest",
          "@supabase/supabase-js": "latest",
          "@vercel/analytics": "latest",
          "autoprefixer": "^10.4.21",
          "class-variance-authority": "^0.7.1",
          "clsx": "^2.1.1",
          "cmdk": "1.0.4",
          "crypto": "latest",
          "date-fns": "4.1.0",
          "embla-carousel-react": "8.5.1",
          "geist": "latest",
          "input-otp": "1.4.1",
          "lucide-react": "^0.454.0",
          "next": "14.2.35",
          "next-themes": "latest",
          "perf_hooks": "latest",
          "react": "^18",
          "react-day-picker": "9.8.0",
          "react-dom": "^18",
          "react-hook-form": "^7.62.0",
          "react-resizable-panels": "^2.1.9",
          "recharts": "2.15.4",
          "sonner": "^1.7.4",
          "tailwind-merge": "^2.5.5",
          "tailwindcss-animate": "^1.0.7",
          "vaul": "^0.9.9",
          "zod": "3.25.67"
        },
        "dev_dependencies": {
          "@tailwindcss/postcss": "^4.1.13",
          "@types/node": "^22",
          "@types/react": "^18",
          "@types/react-dom": "^18",
          "eslint": "^8.57.1",
          "eslint-config-next": "14.2.16",
          "postcss": "^8.5",
          "tailwindcss": "^4.1.13",
          "tw-animate-css": "1.3.3",
          "typescript": "^5"
        }
      }
    ]
  },
  "routes": {
    "api_routes": [
      {
        "route": "/admin/analytics",
        "source_path": "app/api/admin/analytics/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/beers/[id]",
        "source_path": "app/api/admin/beers/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "GET",
          "PUT"
        ]
      },
      {
        "route": "/admin/beers",
        "source_path": "app/api/admin/beers/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/exhibits",
        "source_path": "app/api/admin/exhibits/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/admin/users",
        "source_path": "app/api/admin/users/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/login",
        "source_path": "app/api/auth/login/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/auth/logout",
        "source_path": "app/api/auth/logout/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/beers",
        "source_path": "app/api/beers/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/dashboard/stats",
        "source_path": "app/api/dashboard/stats/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/events/register",
        "source_path": "app/api/events/register/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/events",
        "source_path": "app/api/events/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/integrations/toast/config",
        "source_path": "app/api/integrations/toast/config/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/integrations/toast/test",
        "source_path": "app/api/integrations/toast/test/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/webhooks/n8n",
        "source_path": "app/api/webhooks/n8n/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      }
    ],
    "app_routes": [
      {
        "route": "/about",
        "source_path": "app/about/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/analytics",
        "source_path": "app/admin/analytics/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/api-settings",
        "source_path": "app/admin/api-settings/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/beers/new",
        "source_path": "app/admin/beers/new/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/beers",
        "source_path": "app/admin/beers/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/collection",
        "source_path": "app/admin/collection/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/dashboard",
        "source_path": "app/admin/dashboard/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/education",
        "source_path": "app/admin/education/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/events",
        "source_path": "app/admin/events/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/exhibits/[id]",
        "source_path": "app/admin/exhibits/[id]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/exhibits/new",
        "source_path": "app/admin/exhibits/new/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/exhibits",
        "source_path": "app/admin/exhibits/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/login",
        "source_path": "app/admin/login/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin",
        "source_path": "app/admin/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/settings",
        "source_path": "app/admin/settings/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/users",
        "source_path": "app/admin/users/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/visitors",
        "source_path": "app/admin/visitors/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/error",
        "source_path": "app/auth/error/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/forgot-password",
        "source_path": "app/auth/forgot-password/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/onboarding/member",
        "source_path": "app/auth/onboarding/member/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/onboarding/museum",
        "source_path": "app/auth/onboarding/museum/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/onboarding/supporter",
        "source_path": "app/auth/onboarding/supporter/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/register/member",
        "source_path": "app/auth/register/member/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/register/museum",
        "source_path": "app/auth/register/museum/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/register",
        "source_path": "app/auth/register/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/register/success",
        "source_path": "app/auth/register/success/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/register/supporter",
        "source_path": "app/auth/register/supporter/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/resend-confirmation",
        "source_path": "app/auth/resend-confirmation/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/auth/sign-up-success",
        "source_path": "app/auth/sign-up-success/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": "/beer-history",
        "source_path": "app/beer-history/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/brewing-academy",
        "source_path": "app/brewing-academy/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/collection",
        "source_path": "app/collection/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/contact",
        "source_path": "app/contact/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/dashboard",
        "source_path": "app/dashboard/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/events/[id]",
        "source_path": "app/events/[id]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/events",
        "source_path": "app/events/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/events/virginia-beer-week",
        "source_path": "app/events/virginia-beer-week/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/exhibits/[id]",
        "source_path": "app/exhibits/[id]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/exhibits",
        "source_path": "app/exhibits/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/explore-beer-culture",
        "source_path": "app/explore-beer-culture/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/gallery",
        "source_path": "app/gallery/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/gift-shop",
        "source_path": "app/gift-shop/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/group-booking",
        "source_path": "app/group-booking/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/hours",
        "source_path": "app/hours/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/learning-center",
        "source_path": "app/learning-center/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/museum-admin/dns-setup",
        "source_path": "app/museum-admin/dns-setup/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/museum-admin/events",
        "source_path": "app/museum-admin/events/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/museum-admin/exhibits",
        "source_path": "app/museum-admin/exhibits/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/museum-admin",
        "source_path": "app/museum-admin/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/profile",
        "source_path": "app/profile/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/tickets",
        "source_path": "app/tickets/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/world-museums",
        "source_path": "app/world-museums/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      }
    ]
  },
  "components": [
    {
      "name": "beer-filters",
      "kind": "ui-component",
      "source_path": "components/admin/beer-filters.tsx"
    },
    {
      "name": "beer-form",
      "kind": "ui-component",
      "source_path": "components/admin/beer-form.tsx"
    },
    {
      "name": "beer-grid",
      "kind": "ui-component",
      "source_path": "components/admin/beer-grid.tsx"
    },
    {
      "name": "dashboard",
      "kind": "ui-component",
      "source_path": "components/admin/dashboard.tsx"
    },
    {
      "name": "exhibit-form",
      "kind": "ui-component",
      "source_path": "components/admin/exhibit-form.tsx"
    },
    {
      "name": "exhibit-grid",
      "kind": "ui-component",
      "source_path": "components/admin/exhibit-grid.tsx"
    },
    {
      "name": "header",
      "kind": "ui-component",
      "source_path": "components/admin/header.tsx"
    },
    {
      "name": "sidebar",
      "kind": "ui-component",
      "source_path": "components/admin/sidebar.tsx"
    },
    {
      "name": "auth-guard",
      "kind": "ui-component",
      "source_path": "components/auth-guard.tsx"
    },
    {
      "name": "dns-simulation",
      "kind": "ui-component",
      "source_path": "components/dns-simulation.tsx"
    },
    {
      "name": "error-boundary",
      "kind": "ui-component",
      "source_path": "components/error-boundary.tsx"
    },
    {
      "name": "event-registration-form",
      "kind": "ui-component",
      "source_path": "components/event-registration-form.tsx"
    },
    {
      "name": "global-error-handler",
      "kind": "ui-component",
      "source_path": "components/global-error-handler.tsx"
    },
    {
      "name": "image-gallery",
      "kind": "ui-component",
      "source_path": "components/image-gallery.tsx"
    },
    {
      "name": "integration-config-forms",
      "kind": "ui-component",
      "source_path": "components/integration-config-forms.tsx"
    },
    {
      "name": "loading-spinner",
      "kind": "ui-component",
      "source_path": "components/loading-spinner.tsx"
    },
    {
      "name": "mobile-navigation",
      "kind": "ui-component",
      "source_path": "components/mobile-navigation.tsx"
    },
    {
      "name": "museum-placeholder",
      "kind": "ui-component",
      "source_path": "components/museum-placeholder.tsx"
    },
    {
      "name": "museum-selector",
      "kind": "ui-component",
      "source_path": "components/museum-selector.tsx"
    },
    {
      "name": "profile-avatar",
      "kind": "ui-component",
      "source_path": "components/profile-avatar.tsx"
    },
    {
      "name": "role-badge",
      "kind": "ui-component",
      "source_path": "components/role-badge.tsx"
    },
    {
      "name": "data-table",
      "kind": "ui-component",
      "source_path": "components/shared/data-table.tsx"
    },
    {
      "name": "form-wrapper",
      "kind": "ui-component",
      "source_path": "components/shared/form-wrapper.tsx"
    },
    {
      "name": "page-header",
      "kind": "ui-component",
      "source_path": "components/shared/page-header.tsx"
    },
    {
      "name": "stats-grid",
      "kind": "ui-component",
      "source_path": "components/shared/stats-grid.tsx"
    },
    {
      "name": "site-footer",
      "kind": "ui-component",
      "source_path": "components/site-footer.tsx"
    },
    {
      "name": "site-header",
      "kind": "ui-component",
      "source_path": "components/site-header.tsx"
    },
    {
      "name": "theme-provider",
      "kind": "ui-component",
      "source_path": "components/theme-provider.tsx"
    },
    {
      "name": "toast-provider",
      "kind": "ui-component",
      "source_path": "components/toast-provider.tsx"
    },
    {
      "name": "alert",
      "kind": "ui-component",
      "source_path": "components/ui/alert.tsx"
    },
    {
      "name": "avatar",
      "kind": "ui-component",
      "source_path": "components/ui/avatar.tsx"
    },
    {
      "name": "badge",
      "kind": "ui-component",
      "source_path": "components/ui/badge.tsx"
    },
    {
      "name": "button",
      "kind": "ui-component",
      "source_path": "components/ui/button.tsx"
    },
    {
      "name": "card",
      "kind": "ui-component",
      "source_path": "components/ui/card.tsx"
    },
    {
      "name": "checkbox",
      "kind": "ui-component",
      "source_path": "components/ui/checkbox.tsx"
    },
    {
      "name": "dropdown-menu",
      "kind": "ui-component",
      "source_path": "components/ui/dropdown-menu.tsx"
    },
    {
      "name": "input",
      "kind": "ui-component",
      "source_path": "components/ui/input.tsx"
    },
    {
      "name": "label",
      "kind": "ui-component",
      "source_path": "components/ui/label.tsx"
    },
    {
      "name": "progress",
      "kind": "ui-component",
      "source_path": "components/ui/progress.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": "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": "virginia-beer-stats",
      "kind": "ui-component",
      "source_path": "components/virginia-beer-stats.tsx"
    },
    {
      "name": "world-map",
      "kind": "ui-component",
      "source_path": "components/world-map.tsx"
    }
  ],
  "data_models": [],
  "database": {
    "databases": [],
    "schemas": [
      {
        "path": "scripts/001_create_database_schema.sql"
      },
      {
        "path": "scripts/001_virginia_beer_museum_schema.sql"
      },
      {
        "path": "scripts/007_ticketing_and_booking_schema.sql"
      },
      {
        "path": "scripts/010_update_database_schema.sql"
      }
    ],
    "migrations": []
  },
  "tests": [
    {
      "name": "route.ts",
      "kind": "unit-or-integration",
      "source_path": "app/api/integrations/toast/test/route.ts"
    }
  ],
  "ci": {
    "workflows": []
  },
  "containers": {
    "dockerfiles": [],
    "compose_files": []
  },
  "env": {
    "example_files": [],
    "variables": [
      {
        "name": "GOOGLE_ANALYTICS_API_SECRET",
        "source_paths": [
          "lib/integrations/google-services.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "GOOGLE_ANALYTICS_MEASUREMENT_ID",
        "source_paths": [
          "lib/integrations/google-services.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "GOOGLE_CLIENT_ID",
        "source_paths": [
          "app/api/webhooks/n8n/route.ts",
          "lib/integrations/google-services.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "GOOGLE_CLIENT_SECRET",
        "source_paths": [
          "lib/integrations/google-services.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "GOOGLE_REDIRECT_URI",
        "source_paths": [
          "lib/integrations/google-services.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "N8N_WEBHOOK_TOKEN",
        "source_paths": [
          "app/api/webhooks/n8n/route.ts",
          "lib/integrations/n8n.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "N8N_WEBHOOK_URL",
        "source_paths": [
          "app/api/webhooks/n8n/route.ts",
          "lib/integrations/n8n.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_DEV_SUPABASE_REDIRECT_URL",
        "source_paths": [
          "app/admin/login/page.tsx",
          "app/auth/forgot-password/page.tsx",
          "app/auth/register/member/page.tsx",
          "app/auth/register/museum/page.tsx",
          "app/auth/register/supporter/page.tsx",
          "app/auth/resend-confirmation/page.tsx",
          "app/auth/sign-up/page.tsx"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_SITE_URL",
        "source_paths": [
          "app/layout.tsx",
          "app/sitemap.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_SUPABASE_ANON_KEY",
        "source_paths": [
          "app/admin/page.tsx",
          "app/auth/onboarding/member/page.tsx",
          "app/auth/onboarding/museum/page.tsx",
          "app/auth/onboarding/supporter/page.tsx",
          "app/auth/register/member/page.tsx",
          "app/auth/register/supporter/page.tsx",
          "app/museum-admin/dns-setup/page.tsx",
          "app/museum-admin/events/page.tsx",
          "app/museum-admin/exhibits/page.tsx",
          "app/museum-admin/layout.tsx",
          "app/museum-admin/page.tsx",
          "lib/supabase/client.ts",
          "lib/supabase/server.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "NEXT_PUBLIC_SUPABASE_URL",
        "source_paths": [
          "app/admin/page.tsx",
          "app/api/webhooks/n8n/route.ts",
          "app/auth/onboarding/member/page.tsx",
          "app/auth/onboarding/museum/page.tsx",
          "app/auth/onboarding/supporter/page.tsx",
          "app/auth/register/member/page.tsx",
          "app/auth/register/supporter/page.tsx",
          "app/museum-admin/dns-setup/page.tsx",
          "app/museum-admin/events/page.tsx",
          "app/museum-admin/exhibits/page.tsx",
          "app/museum-admin/layout.tsx",
          "app/museum-admin/page.tsx",
          "lib/supabase/client.ts",
          "lib/supabase/server.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NODE_ENV",
        "source_paths": [
          "lib/error-handler.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "SUPABASE_ANON_KEY",
        "source_paths": [
          "lib/supabase/middleware.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "SUPABASE_URL",
        "source_paths": [
          "lib/supabase/middleware.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "TOAST_POS_API_KEY",
        "source_paths": [
          "app/api/integrations/toast/test/route.ts",
          "lib/integrations/toast-pos.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "TOAST_POS_BASE_URL",
        "source_paths": [
          "lib/integrations/toast-pos.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "TOAST_POS_ENVIRONMENT",
        "source_paths": [
          "app/api/integrations/toast/test/route.ts",
          "lib/integrations/toast-pos.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "TOAST_POS_RESTAURANT_GUID",
        "source_paths": [
          "app/api/integrations/toast/test/route.ts",
          "lib/integrations/toast-pos.ts"
        ],
        "likely_secret": false
      }
    ]
  },
  "configs": [
    {
      "path": "next.config.mjs"
    },
    {
      "path": "package.json"
    },
    {
      "path": "pnpm-workspace.yaml"
    },
    {
      "path": "postcss.config.mjs"
    },
    {
      "path": "tsconfig.json"
    }
  ],
  "docs": {
    "readme_paths": [
      {
        "path": "README.md"
      }
    ],
    "doc_paths": [
      {
        "path": "docs/DEPLOYMENT.md"
      },
      {
        "path": "docs/SECURITY.md"
      }
    ],
    "llms_context_paths": []
  },
  "discovery_files": {
    "openapi": [],
    "mcp": [],
    "llms": [],
    "sitemaps": [],
    "feeds": [],
    "well_known": [],
    "robots": [
      {
        "path": "public/robots.txt"
      }
    ],
    "manifests": []
  },
  "integrations": [
    {
      "name": "Google",
      "confidence": "medium",
      "evidence_paths": [
        "app/api/webhooks/n8n/route.ts",
        "lib/integrations/google-services.ts",
        "package.json"
      ]
    },
    {
      "name": "Supabase",
      "confidence": "medium",
      "evidence_paths": [
        "app/admin/login/page.tsx",
        "app/admin/page.tsx",
        "app/api/webhooks/n8n/route.ts",
        "app/auth/forgot-password/page.tsx",
        "app/auth/onboarding/member/page.tsx",
        "app/auth/onboarding/museum/page.tsx",
        "app/auth/onboarding/supporter/page.tsx",
        "app/auth/register/member/page.tsx",
        "app/auth/register/museum/page.tsx",
        "app/auth/register/supporter/page.tsx",
        "app/auth/resend-confirmation/page.tsx",
        "app/auth/sign-up/page.tsx",
        "app/museum-admin/dns-setup/page.tsx",
        "app/museum-admin/events/page.tsx",
        "components/site-header.tsx",
        "docs/DEPLOYMENT.md",
        "package.json",
        "pnpm-lock.yaml"
      ]
    },
    {
      "name": "Vercel",
      "confidence": "medium",
      "evidence_paths": [
        "app/layout.tsx",
        "package.json",
        "pnpm-lock.yaml"
      ]
    }
  ],
  "license": {
    "spdx": null,
    "paths": []
  },
  "comments": [
    {
      "kind": "security",
      "source_path": "app/admin/settings/page.tsx",
      "line": 65,
      "text": "Security"
    },
    {
      "kind": "security",
      "source_path": "app/admin/settings/page.tsx",
      "line": 280,
      "text": "{/* Security Settings */}"
    },
    {
      "kind": "security",
      "source_path": "app/admin/settings/page.tsx",
      "line": 285,
      "text": "Security Settings"
    },
    {
      "kind": "security",
      "source_path": "app/api/admin/beers/route.ts",
      "line": 4,
      "text": "import { withSecurity, validateRequestBody } from \"@/lib/security-middleware\""
    },
    {
      "kind": "security",
      "source_path": "app/api/auth/login/route.ts",
      "line": 126,
      "text": "// Add performance and security headers"
    },
    {
      "kind": "security",
      "source_path": "app/api/events/route.ts",
      "line": 3,
      "text": "import { withSecurity } from \"@/lib/security-middleware\""
    },
    {
      "kind": "security",
      "source_path": "app/auth/onboarding/museum/page.tsx",
      "line": 797,
      "text": "<h3 className=\"font-semibold text-blue-900\">Security Note</h3>"
    },
    {
      "kind": "security",
      "source_path": "docs/DEPLOYMENT.md",
      "line": 68,
      "text": "### Security Considerations"
    },
    {
      "kind": "security",
      "source_path": "docs/DEPLOYMENT.md",
      "line": 89,
      "text": "2. `02-setup-rls.sql` - Security policies"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 1,
      "text": "# Security Documentation"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 4,
      "text": "The Beer Museum Manager implements comprehensive security measures including authentication, authorization, input validation, rate limiting, and audit logging."
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 22,
      "text": "### Row Level Security (RLS)"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 91,
      "text": "## Security Headers"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 93,
      "text": "### Content Security Policy"
    },
    {
      "kind": "unsafe",
      "source_path": "docs/SECURITY.md",
      "line": 97,
      "text": "script-src 'self' 'unsafe-inline' 'unsafe-eval';"
    },
    {
      "kind": "unsafe",
      "source_path": "docs/SECURITY.md",
      "line": 98,
      "text": "style-src 'self' 'unsafe-inline';"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 116,
      "text": "- Security violations"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 134,
      "text": "- Security logs: 1 year"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 161,
      "text": "### Security Scanning"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 163,
      "text": "- Code security analysis"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 165,
      "text": "- Security audit reviews"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 174,
      "text": "### Security Updates"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 176,
      "text": "- Security patch management"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 184,
      "text": "- Security best practices"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 189,
      "text": "- Monthly security assessments"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 191,
      "text": "- Annual security audits"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 194,
      "text": "## Security Checklist"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 204,
      "text": "- [ ] Security headers set"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 213,
      "text": "- [ ] Security testing passed"
    },
    {
      "kind": "security",
      "source_path": "docs/SECURITY.md",
      "line": 220,
      "text": "- [ ] Security metrics monitored"
    },
    {
      "kind": "security",
      "source_path": "lib/security-middleware.ts",
      "line": 3,
      "text": "import { hasPermission } from \"@/lib/security-utils\""
    },
    {
      "kind": "security",
      "source_path": "lib/security-middleware.ts",
      "line": 4,
      "text": "import { logAuditEvent } from \"@/lib/security-utils\""
    },
    {
      "kind": "security",
      "source_path": "lib/security-middleware.ts",
      "line": 155,
      "text": "console.error(`[Security Middleware Error] ${requestId}:`, error)"
    },
    {
      "kind": "unsafe",
      "source_path": "lib/security-utils.tsx",
      "line": 161,
      "text": "export function escapeHtml(unsafe: string): string {"
    },
    {
      "kind": "unsafe",
      "source_path": "lib/security-utils.tsx",
      "line": 162,
      "text": "return unsafe"
    },
    {
      "kind": "security",
      "source_path": "lib/security-utils.tsx",
      "line": 170,
      "text": "// Content Security Policy headers"
    },
    {
      "kind": "unsafe",
      "source_path": "lib/security-utils.tsx",
      "line": 173,
      "text": "\"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://vercel.live\","
    },
    {
      "kind": "unsafe",
      "source_path": "lib/security-utils.tsx",
      "line": 174,
      "text": "\"style-src 'self' 'unsafe-inline' https://fonts.googleapis.com\","
    },
    {
      "kind": "security",
      "source_path": "lib/supabase/middleware.ts",
      "line": 105,
      "text": "// Add security headers"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 271,
      "text": "deprecated: Use @eslint/config-array instead"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 279,
      "text": "deprecated: Use @eslint/object-schema instead"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 1894,
      "text": "deprecated: This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in."
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 2175,
      "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": 2308,
      "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": 2313,
      "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": 2382,
      "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": 2975,
      "text": "deprecated: Rimraf versions prior to v4 are no longer supported"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 3152,
      "text": "deprecated: Old versions of tar 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 conta"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 20,
      "text": "- **Security & Compliance**: Enterprise-grade security with audit logging and data protection"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 27,
      "text": "- **Authentication**: Supabase Auth with Row Level Security (RLS)"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 36,
      "text": "- **Audit Logs**: Comprehensive activity tracking and security logging"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 98,
      "text": "- [Security Documentation](docs/SECURITY.md) - Security features and best practices"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 128,
      "text": "## Security Features"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 132,
      "text": "- **Data Protection**: Row Level Security (RLS) policies on all database tables"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 135,
      "text": "- **Audit Logging**: Complete activity tracking for security and compliance"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 136,
      "text": "- **Security Headers**: CSP, HSTS, and other security headers implemented"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_database_schema.sql",
      "line": 87,
      "text": "-- Enable Row Level Security"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_database_schema.sql",
      "line": 88,
      "text": "ALTER TABLE public.profiles ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_database_schema.sql",
      "line": 89,
      "text": "ALTER TABLE public.exhibits ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_database_schema.sql",
      "line": 90,
      "text": "ALTER TABLE public.events ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_database_schema.sql",
      "line": 91,
      "text": "ALTER TABLE public.event_registrations ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_database_schema.sql",
      "line": 92,
      "text": "ALTER TABLE public.beer_collection ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_create_database_schema.sql",
      "line": 93,
      "text": "ALTER TABLE public.visitor_logs ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_virginia_beer_museum_schema.sql",
      "line": 155,
      "text": "-- Enable Row Level Security"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_virginia_beer_museum_schema.sql",
      "line": 156,
      "text": "ALTER TABLE public.profiles ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_virginia_beer_museum_schema.sql",
      "line": 157,
      "text": "ALTER TABLE public.tenants ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_virginia_beer_museum_schema.sql",
      "line": 158,
      "text": "ALTER TABLE public.world_beer_museums ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_virginia_beer_museum_schema.sql",
      "line": 159,
      "text": "ALTER TABLE public.exhibits ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_virginia_beer_museum_schema.sql",
      "line": 160,
      "text": "ALTER TABLE public.events ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_virginia_beer_museum_schema.sql",
      "line": 161,
      "text": "ALTER TABLE public.event_registrations ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_virginia_beer_museum_schema.sql",
      "line": 162,
      "text": "ALTER TABLE public.beer_collection ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_virginia_beer_museum_schema.sql",
      "line": 163,
      "text": "ALTER TABLE public.visitor_logs ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/001_virginia_beer_museum_schema.sql",
      "line": 164,
      "text": "ALTER TABLE public.notifications ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/002_create_triggers.sql",
      "line": 7,
      "text": "SECURITY DEFINER"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_auth_and_tenant_setup.sql",
      "line": 1,
      "text": "-- Enable Row Level Security on existing tables"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_auth_and_tenant_setup.sql",
      "line": 2,
      "text": "ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_auth_and_tenant_setup.sql",
      "line": 3,
      "text": "ALTER TABLE exhibits ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_auth_and_tenant_setup.sql",
      "line": 4,
      "text": "ALTER TABLE events ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_auth_and_tenant_setup.sql",
      "line": 5,
      "text": "ALTER TABLE beer_collection ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_auth_and_tenant_setup.sql",
      "line": 6,
      "text": "ALTER TABLE event_registrations ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_auth_and_tenant_setup.sql",
      "line": 7,
      "text": "ALTER TABLE visitor_logs ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/003_auth_and_tenant_setup.sql",
      "line": 53,
      "text": "SECURITY DEFINER"
    },
    {
      "kind": "security",
      "source_path": "scripts/004_educational_content_setup.sql",
      "line": 22,
      "text": "ALTER TABLE educational_content ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/005_add_missing_environment_variables.sql",
      "line": 43,
      "text": "ALTER TABLE museum_settings ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_add_location_photos_and_data.sql",
      "line": 156,
      "text": "ALTER TABLE museum_locations ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/006_add_location_photos_and_data.sql",
      "line": 190,
      "text": "ALTER TABLE museum_photos ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/007_ticketing_and_booking_schema.sql",
      "line": 231,
      "text": "-- Enable Row Level Security"
    },
    {
      "kind": "security",
      "source_path": "scripts/007_ticketing_and_booking_schema.sql",
      "line": 232,
      "text": "ALTER TABLE public.ticket_types ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/007_ticketing_and_booking_schema.sql",
      "line": 233,
      "text": "ALTER TABLE public.ticket_addons ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/007_ticketing_and_booking_schema.sql",
      "line": 234,
      "text": "ALTER TABLE public.ticket_orders ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/007_ticketing_and_booking_schema.sql",
      "line": 235,
      "text": "ALTER TABLE public.ticket_order_items ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/007_ticketing_and_booking_schema.sql",
      "line": 236,
      "text": "ALTER TABLE public.group_bookings ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/007_ticketing_and_booking_schema.sql",
      "line": 237,
      "text": "ALTER TABLE public.visitor_checkins ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/007_ticketing_and_booking_schema.sql",
      "line": 238,
      "text": "ALTER TABLE public.membership_types ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/007_ticketing_and_booking_schema.sql",
      "line": 239,
      "text": "ALTER TABLE public.memberships ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/007_ticketing_and_booking_schema.sql",
      "line": 240,
      "text": "ALTER TABLE public.gift_shop_orders ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/007_ticketing_and_booking_schema.sql",
      "line": 241,
      "text": "ALTER TABLE public.gift_shop_order_items ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/007_ticketing_and_booking_schema.sql",
      "line": 242,
      "text": "ALTER TABLE public.visitor_surveys ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/009_educational_enhancements.sql",
      "line": 158,
      "text": "-- Enable Row Level Security"
    },
    {
      "kind": "security",
      "source_path": "scripts/009_educational_enhancements.sql",
      "line": 159,
      "text": "ALTER TABLE public.user_course_progress ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/009_educational_enhancements.sql",
      "line": 160,
      "text": "ALTER TABLE public.course_lessons ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/009_educational_enhancements.sql",
      "line": 161,
      "text": "ALTER TABLE public.user_lesson_progress ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/009_educational_enhancements.sql",
      "line": 162,
      "text": "ALTER TABLE public.course_reviews ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/009_educational_enhancements.sql",
      "line": 163,
      "text": "ALTER TABLE public.learning_paths ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/009_educational_enhancements.sql",
      "line": 164,
      "text": "ALTER TABLE public.learning_path_courses ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/009_educational_enhancements.sql",
      "line": 165,
      "text": "ALTER TABLE public.user_learning_path_progress ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/009_educational_enhancements.sql",
      "line": 166,
      "text": "ALTER TABLE public.certificates ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/01-fix-profiles-rls-policies.sql",
      "line": 21,
      "text": "ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_update_database_schema.sql",
      "line": 104,
      "text": "-- Enable Row Level Security on new tables"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_update_database_schema.sql",
      "line": 105,
      "text": "ALTER TABLE museums ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_update_database_schema.sql",
      "line": 106,
      "text": "ALTER TABLE museum_members ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_update_database_schema.sql",
      "line": 107,
      "text": "ALTER TABLE museum_api_keys ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/010_update_database_schema.sql",
      "line": 108,
      "text": "ALTER TABLE onboarding_progress ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/011_museum_api_settings_table.sql",
      "line": 39,
      "text": "ALTER TABLE museum_api_settings ENABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/fix-profiles-rls-policies.sql",
      "line": 11,
      "text": "ALTER TABLE profiles DISABLE ROW LEVEL SECURITY;"
    },
    {
      "kind": "security",
      "source_path": "scripts/fix-profiles-rls-policies.sql",
      "line": 14,
      "text": "ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;"
    }
  ],
  "security": {
    "secret_risks": [],
    "unsafe_patterns": [
      {
        "name": "dangerously-set-html",
        "confidence": "medium",
        "evidence_paths": [
          "app/layout.tsx"
        ]
      }
    ],
    "sensitive_data_indicators": [
      {
        "name": "api_key",
        "confidence": "medium",
        "evidence_paths": [
          "app/admin/api-settings/page.tsx",
          "app/api/integrations/toast/test/route.ts",
          "app/auth/onboarding/museum/page.tsx",
          "lib/integrations/toast-pos.ts",
          "scripts/005_add_missing_environment_variables.sql",
          "scripts/010_update_database_schema.sql",
          "scripts/011_museum_api_settings_table.sql",
          "scripts/100_comprehensive_seed_data.sql",
          "TECHNICAL_README.md"
        ]
      },
      {
        "name": "card",
        "confidence": "medium",
        "evidence_paths": [
          "app/about/page.tsx",
          "app/admin/analytics/page.tsx",
          "app/admin/api-settings/page.tsx",
          "app/admin/beers/page.tsx",
          "app/admin/collection/page.tsx",
          "app/admin/dashboard/page.tsx",
          "app/admin/education/page.tsx",
          "app/admin/events/page.tsx",
          "app/admin/exhibits/[id]/page.tsx",
          "app/admin/exhibits/page.tsx",
          "app/admin/login/page.tsx",
          "app/admin/page.tsx",
          "app/admin/settings/page.tsx",
          "app/admin/users/page.tsx",
          "app/admin/visitors/page.tsx",
          "app/auth/error/page.tsx",
          "app/auth/forgot-password/page.tsx",
          "app/auth/login/page.tsx",
          "app/auth/onboarding/member/page.tsx",
          "app/auth/onboarding/museum/page.tsx"
        ]
      },
      {
        "name": "email",
        "confidence": "medium",
        "evidence_paths": [
          "app/admin/api-settings/page.tsx",
          "app/admin/dashboard/page.tsx",
          "app/admin/events/page.tsx",
          "app/admin/login/page.tsx",
          "app/admin/page.tsx",
          "app/admin/settings/page.tsx",
          "app/admin/users/page.tsx",
          "app/admin/visitors/page.tsx",
          "app/api/admin/users/route.ts",
          "app/api/auth/login/route.ts",
          "app/auth/forgot-password/page.tsx",
          "app/auth/login/page.tsx",
          "app/auth/onboarding/member/page.tsx",
          "app/auth/onboarding/museum/page.tsx",
          "app/auth/onboarding/supporter/page.tsx",
          "app/auth/register/member/page.tsx",
          "app/auth/register/museum/page.tsx",
          "app/auth/register/success/page.tsx",
          "app/auth/register/supporter/page.tsx",
          "app/auth/resend-confirmation/page.tsx"
        ]
      },
      {
        "name": "financial",
        "confidence": "medium",
        "evidence_paths": [
          "app/auth/onboarding/supporter/page.tsx",
          "app/auth/register/supporter/page.tsx"
        ]
      },
      {
        "name": "health",
        "confidence": "medium",
        "evidence_paths": [
          "app/api/webhooks/n8n/route.ts",
          "docs/DEPLOYMENT.md"
        ]
      },
      {
        "name": "location",
        "confidence": "medium",
        "evidence_paths": [
          "app/about/page.tsx",
          "app/admin/events/page.tsx",
          "app/admin/exhibits/[id]/page.tsx",
          "app/admin/exhibits/page.tsx",
          "app/admin/login/page.tsx",
          "app/admin/page.tsx",
          "app/api/admin/exhibits/route.ts",
          "app/api/events/route.ts",
          "app/auth/forgot-password/page.tsx",
          "app/auth/onboarding/member/page.tsx",
          "app/auth/onboarding/museum/page.tsx",
          "app/auth/register/member/page.tsx",
          "app/auth/register/museum/page.tsx",
          "app/auth/register/page.tsx",
          "app/auth/register/supporter/page.tsx",
          "app/auth/resend-confirmation/page.tsx",
          "app/auth/sign-up/page.tsx",
          "app/beer-history/page.tsx",
          "app/contact/page.tsx",
          "app/dashboard/page.tsx"
        ]
      },
      {
        "name": "oauth",
        "confidence": "medium",
        "evidence_paths": [
          "components/integration-config-forms.tsx",
          "lib/integrations/google-services.ts"
        ]
      },
      {
        "name": "password",
        "confidence": "medium",
        "evidence_paths": [
          "app/admin/api-settings/page.tsx",
          "app/admin/login/page.tsx",
          "app/admin/settings/page.tsx",
          "app/api/auth/login/route.ts",
          "app/auth/forgot-password/page.tsx",
          "app/auth/login/page.tsx",
          "app/auth/onboarding/museum/page.tsx",
          "app/auth/register/member/page.tsx",
          "app/auth/register/museum/page.tsx",
          "app/auth/register/supporter/page.tsx",
          "app/auth/sign-up/page.tsx",
          "components/integration-config-forms.tsx",
          "docs/SECURITY.md",
          "lib/security-utils.tsx"
        ]
      },
      {
        "name": "payment",
        "confidence": "medium",
        "evidence_paths": [
          "app/admin/analytics/page.tsx",
          "app/admin/api-settings/page.tsx",
          "app/auth/onboarding/museum/page.tsx",
          "app/beer-history/page.tsx",
          "app/gift-shop/page.tsx",
          "app/group-booking/page.tsx",
          "lib/integrations/toast-pos.ts",
          "scripts/007_ticketing_and_booking_schema.sql",
          "scripts/008_operational_data_setup.sql"
        ]
      },
      {
        "name": "pii",
        "confidence": "medium",
        "evidence_paths": [
          "pnpm-lock.yaml"
        ]
      },
      {
        "name": "secret-like environment variables",
        "confidence": "medium",
        "evidence_paths": [
          "package.json"
        ]
      },
      {
        "name": "token",
        "confidence": "medium",
        "evidence_paths": [
          "app/api/auth/login/route.ts",
          "app/api/webhooks/n8n/route.ts",
          "components/integration-config-forms.tsx",
          "docs/SECURITY.md",
          "lib/integrations/google-services.ts",
          "lib/integrations/n8n.ts",
          "lib/integrations/toast-pos.ts",
          "lib/security-middleware.ts",
          "lib/security-utils.tsx",
          "pnpm-lock.yaml",
          "scripts/014_add_permissions_columns.sql"
        ]
      }
    ]
  },
  "generated_at": "2026-05-16T16:44:06.331Z"
}
