├── docs
│ ├── archive
│ │ ├── ADMIN_DASHBOARD_DESIGN.md
│ │ ├── FR_Missing_Features.md
│ │ ├── FR1.md
│ │ ├── Implementation-Plan-Dashboard-V2.md
│ │ └── vm-migration-log.md
│ ├── guides
│ │ ├── admin-sql-cookbook.md
│ │ ├── frontend-best-practices.md
│ │ ├── LLM_TESTING_PLAYBOOK.md
│ │ └── MAINTENANCE_PLAYBOOK.md
│ ├── product
│ │ ├── marketing
│ │ │ └── TheZero-BudgetLaunchPlan.md
│ │ └── roadmap.md
│ ├── rfc
│ │ ├── 09-selective-domain-scanning-rfc.md
│ │ ├── 10-smart-scan-retry-mechanism.md
│ │ ├── 11-distributed-inspection-scan-rfc.md
│ │ ├── 12-comprehensive-scan-resiliency-rfc.md
│ │ ├── 13-proactive-usage-limits-ui-rfc.md
│ │ ├── 14-component-driven-dashboard-ux-rfc.md
│ │ ├── 15-configurable-inspection-proxy-rfc.md
│ │ ├── 16-tanstack-query-integration-rfc.md
│ │ ├── 17-proxy-waterfall-strategy-rfc.md
│ │ └── 18-gated-feedback-form-rfc.md
│ ├── tech
│ │ ├── 01-architecture-overview.md
│ │ ├── 02-backend-architecture.md
│ │ ├── 03-frontend-architecture.md
│ │ ├── 04-database-schema.md
│ │ ├── 05-authentication-flow.md
│ │ ├── 06-scanning-and-analysis-flow.md
│ │ ├── 07-admin-dashboard.md
│ │ └── 08-production-vm-deployment.md
│ └── RESTORATION_GUIDE.md
├── linkpatrol-backend
│ ├── alembic
│ │ ├── versions
│ │ │ ├── 27ddac54d386_initial_migration.py
│ │ │ ├── d129578389e0_add_test_column_to_user_model.py
│ │ │ └── d2dd54136677_remove_test_column_from_user_model.py
│ │ ├── env.py
│ │ ├── README
│ │ └── script.py.mako
│ ├── app
│ │ ├── api
│ │ │ ├── v1
│ │ │ │ ├── endpoints
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── admin.py
│ │ │ │ │ ├── affiliate_tags.py
│ │ │ │ │ ├── auth.py
│ │ │ │ │ ├── contact.py
│ │ │ │ │ ├── dashboard.py
│ │ │ │ │ ├── health.py
│ │ │ │ │ ├── issues.py
│ │ │ │ │ ├── properties.py
│ │ │ │ │ ├── scans.py
│ │ │ │ │ ├── tasks.py
│ │ │ │ │ └── users.py
│ │ │ │ ├── __init__.py
│ │ │ │ └── schemas.py
│ │ │ ├── __init__.py
│ │ │ └── deps.py
│ │ ├── core
│ │ │ ├── __init__.py
│ │ │ ├── celery_app.py
│ │ │ ├── config.py
│ │ │ └── logging_config.py
│ │ ├── db
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── init_db.py
│ │ │ └── models.py
│ │ ├── models
│ │ │ └── inspection.py
│ │ ├── services
│ │ │ ├── __init__.py
│ │ │ ├── analyzer.py
│ │ │ ├── html_preprocessor.py
│ │ │ ├── link_inspector.py
│ │ │ ├── llm_detector.py
│ │ │ ├── rule_based_detector.py
│ │ │ ├── website_crawler.py
│ │ │ └── youtube_crawler.py
│ │ ├── tasks
│ │ │ ├── __init__.py
│ │ │ ├── cleanup.py
│ │ │ ├── context_analysis.py
│ │ │ ├── discovery.py
│ │ │ ├── inspection.py
│ │ │ ├── retry.py
│ │ │ └── utils.py
│ │ ├── __init__.py
│ │ └── main.py
│ ├── deploy
│ │ ├── service-web.yaml
│ │ └── service-worker.yaml
│ ├── tests
│ │ ├── test_link_inspector_integration.py
│ │ ├── test_main.py
│ │ └── test_scans_api.py
│ ├── vm-deploy
│ │ ├── deploy.sh
│ │ ├── docker-compose.yml
│ │ └── linkpatrol.service
│ ├── alembic.ini
│ ├── celery_runner.py
│ ├── cleanup_stuck_scans.py
│ ├── cloudbuild.yaml
│ ├── Dockerfile
│ ├── manage_user.py
│ ├── requirements.txt
│ └── run.sh
├── linkpatrol-frontend
│ ├── public
│ │ ├── images
│ │ │ ├── 1.png
│ │ │ ├── 2.png
│ │ │ ├── 3.png
│ │ │ ├── 4.png
│ │ │ ├── 5.png
│ │ │ ├── linkpatrol.ico
│ │ │ └── og-hero-image.png
│ │ └── HOW_TO_USE.md
│ ├── src
│ │ ├── api
│ │ │ └── apiClient.js
│ │ ├── components
│ │ │ ├── dashboard_v2
│ │ │ │ ├── IssueSummaryWidget.jsx
│ │ │ │ ├── PriorityIssuesWidget.jsx
│ │ │ │ ├── ScanConfigurationPanel.jsx
│ │ │ │ ├── ScanProgressWidget.jsx
│ │ │ │ └── ScanWorkflowWizard.jsx
│ │ │ ├── landing-page
│ │ │ │ ├── ContactSection.jsx
│ │ │ │ ├── CtaSection.jsx
│ │ │ │ ├── FaqSection.jsx
│ │ │ │ ├── FeaturesSection.jsx
│ │ │ │ ├── Footer.jsx
│ │ │ │ ├── Header.jsx
│ │ │ │ ├── HeroSection.jsx
│ │ │ │ ├── PricingSection.jsx
│ │ │ │ ├── ProblemSection.jsx
│ │ │ │ ├── SignInModal.jsx
│ │ │ │ ├── SocialProof.jsx
│ │ │ │ ├── SolutionSection.jsx
│ │ │ │ └── TestimonialsSection.jsx
│ │ │ ├── AccountUsageMenu.jsx
│ │ │ ├── AddPropertyModal.jsx
│ │ │ ├── AdminRoute.jsx
│ │ │ ├── AnalyticsTracker.jsx
│ │ │ ├── BannerDisplay.jsx
│ │ │ ├── FeedbackGate.jsx
│ │ │ ├── FeedbackModal.jsx
│ │ │ ├── HelpModal.jsx
│ │ │ ├── ImpersonationBanner.jsx
│ │ │ ├── IssueFilterBar.jsx
│ │ │ ├── OccurrencesCell.jsx
│ │ │ ├── ProfileMenu.jsx
│ │ │ ├── ProjectSelector.jsx
│ │ │ ├── PropertyDisplay.jsx
│ │ │ ├── ProtectedRoute.jsx
│ │ │ ├── ResponsiveDataTable.jsx
│ │ │ ├── SegmentedProgressBar.jsx
│ │ │ ├── Sidebar.jsx
│ │ │ └── TagConfirmationWidget.jsx
│ │ ├── context
│ │ │ ├── AuthContext.jsx
│ │ │ ├── BannerContext.jsx
│ │ │ ├── ConfigContext.jsx
│ │ │ ├── FeedbackModalContext.jsx
│ │ │ └── HelpModalContext.jsx
│ │ ├── hooks
│ │ │ └── queries.js
│ │ ├── pages
│ │ │ ├── AdminDashboardPage.jsx
│ │ │ ├── AffiliateTagsPage.jsx
│ │ │ ├── DashboardPageV2.jsx
│ │ │ ├── IssuesPage.jsx
│ │ │ ├── LandingPage.jsx
│ │ │ ├── PropertyManagementPage.jsx
│ │ │ ├── ResultsPage.jsx
│ │ │ ├── ScanConfigurationPage.jsx
│ │ │ ├── ScanManagementPage.jsx
│ │ │ ├── UsageAndLimitsPage.jsx
│ │ │ └── UserManagementPage.jsx
│ │ ├── App.jsx
│ │ ├── App.test.jsx
│ │ ├── constants.jsx
│ │ ├── firebase.js
│ │ ├── index.css
│ │ ├── main.jsx
│ │ └── setupTests.js
│ ├── index.html
│ ├── package.json
│ ├── postcss.config.js
│ ├── tailwind.config.js
│ ├── vercel.json
│ └── vite.config.js
├── llm_testing_tools
│ ├── fetch_url.py
│ └── test_inspector.py
├── n8n
│ ├── workflows
│ │ ├── blog_generation.json
│ │ ├── content_generation_workflow.json
│ │ └── content_publishing_workflow.json
│ └── docker-compose.yml
├── 1
├── backfill_issues.sh
├── backup_db.sh
├── backup.env
├── clean_scans.sh
├── cleanup_db.sh
├── cloudbuild-vm.yaml
├── content-pipeline.csv
├── GEMINI.md
├── linkpatrol_backup.sql
├── pull_prod_db.sh
├── reinit_prod_db.sh
├── start.sh
├── stop.sh
├── teardown.sh
└── truncate_all_tables.sql