File & Directory Structure

Every file and folder in the application, explained.

Source Code Root (E:\All In One App\)

All In One App/
├── main.py                   Entry point
├── main_window.py            Top-level window and layout
├── app_style.py              Global dark stylesheet + status color maps
│
├── core/                     Business logic, workers, data
│   ├── config.py             AppConfig dataclass + path resolution
│   ├── paths.py              Backward-compat constants proxy
│   ├── signals.py            AppSignals singleton (cross-module events)
│   ├── data_manager.py       JSON state store (pipeline, queue, rejected)
│   ├── registry.py           Windows Registry read/write
│   ├── ai_launcher.py        Routes to Claude or Gemini launcher
│   ├── claude_launcher.py    Spawns Claude CLI in new terminal
│   ├── gemini_launcher.py    Spawns Gemini CLI in new terminal
│   ├── process_monitor.py    QThread: watches spawned process until exit
│   ├── webcopy_worker.py     QThread: runs Cyotek WebCopy
│   ├── webcopy_queue.py      Concurrency pool for WebCopy jobs (max 3)
│   ├── deploy_worker.py      QThread: runs deploy-demo.ps1 + encrypted doc publish
│   ├── cold_call_worker.py   QThread: silent Claude contact extraction
│   ├── backup_worker.py      QThread: copies site to Site Backups/
│   ├── discovery_worker.py   QThread: calls Google Places API
│   ├── saved_searches.py     Preset dataclass + JSON persistence
│   ├── api_export.py         Export/import API keys to/from JSON
│   ├── data_archive.py       Full ZIP export/import with workers
│   ├── report_crypto.py      AES-256-GCM encryption + fragment URL generation
│   └── clear_data.py         QThread: wipes all filesystem data (keeps registry keys)
│
├── discovery/
│   ├── discover.py           Google Places API calls + spiral tile gen
│   └── blocklist.py          ~150 franchise keyword fragments
│
├── seo/
│   ├── audit.py              HTML parser + on-page SEO rule checks
│   ├── models.py             PageResult / Finding dataclasses + severity enum
│   ├── technical.py          Technical SEO checks (canonical, robots, sitemap, etc.)
│   ├── local_seo.py          Local SEO checks (NAP, Maps embed, LocalBusiness schema)
│   ├── geo.py                AI/GEO readiness checks (structured data, FAQ, llms.txt)
│   ├── keywords.py           Keyword density analysis and per-page tables
│   ├── schema_gen.py         JSON-LD structured data snippet generator
│   ├── llms_txt.py           llms.txt generator for AI crawler discoverability
│   ├── sitemap_gen.py        sitemap.xml generator
│   └── report_gen.py         Compiles findings into client-facing seo-report.md
│
├── stock_checker/
│   └── lens_worker.py        Playwright Google Lens automation
│
├── ui/
│   ├── pipeline_row_widget.py  One row in the pipeline table
│   ├── discovery_panel.py      Left panel: search inputs + list
│   ├── swiper_panel.py         Right panel: browser + evaluate buttons
│   ├── settings_dialog.py      Settings modal
│   ├── scratch_popup.py        Build from Scratch dialog
│   ├── cold_call_popup.py      Contact results popup
│   ├── pipeline_panel.py       Scrollable container for all pipeline rows
│   ├── seo_window.py           Multi-tab SEO suite (Audit, Keywords, AI Enhancement, etc.)
│   ├── note_popup.py           Per-lead note editor
│   ├── manual_add_dialog.py    Add existing site to pipeline
│   └── toast.py                Auto-dismiss notification overlay
│
├── Native/                   Build and packaging scripts
│   ├── build.ps1             Main build orchestrator
│   ├── installer.iss         Inno Setup installer script
│   ├── stage-bundle.ps1      Downloads/packs dependencies
│   ├── post-install.ps1      Runs after Inno Setup (installs Node packages)
│   ├── bundle/               Pre-staged installers (Node MSI, WebCopy, CLIs)
│   ├── frozen/               PyInstaller output directory
│   └── output/               Final HippopotamooseSetup.exe
│
├── tools/                    PowerShell scripts (deployment, audit, build)
│   ├── deploy-demo.ps1
│   ├── deploy-docs.ps1
│   ├── deploy-viewer.ps1
│   ├── list-site-structure.ps1
│   ├── list-client-docs.ps1
│   ├── install.ps1
│   ├── build-installer.ps1
│   └── markdown-files/       Legacy .md files awaiting migration to encrypted-docs
│
└── data/                     Runtime data (created on first run)
    ├── pipeline.json
    ├── queue.json
    ├── rejected.json
    ├── saved_searches.json
    ├── temp/
    └── encrypted-docs/       Staged .enc files + docs-index.json (LOCAL ONLY — never deployed)

Runtime Data Directories

downloaded_sites/
├── smithplumbing/            Raw website copy (HTML, images, CSS, JS)
│   └── index.html
└── acmeroof/

edited_sites/
├── smithplumbing/            AI-rebuilt static site
│   ├── index.html
│   ├── css/
│   ├── js/
│   ├── images/
│   ├── _worker.js            Contact-form relay (Pages advanced mode)
│   └── DESIGN_NOTES.md       AI design decision log
└── acmeroof/

example_sites/
├── plumber/
│   └── bestplumber/          Reference site saved via ★ EXAMPLE
└── roofer/

Site Backups/
└── smithplumbing/
    ├── Edition 1/            Snapshot after first Form revision
    └── Edition 2/

Build System (Native/)

FileDescription
build.ps1Orchestrates the full build. Parameters: -SkipBundle (skip downloading dependencies), -SkipFreeze (skip PyInstaller), -Clean (delete output before building). Run with .\build.ps1 from the Native/ directory.
installer.issInno Setup 6 script. Defines the installer UI, installs the frozen app to {autopf}\Hippopotamoose, bundles all runtime dependencies, and runs post-install.ps1.
stage-bundle.ps1Downloads Node.js LTS MSI, Cyotek WebCopy EXE, Claude Code CLI tgz, Wrangler tgz via npm pack, and installs Playwright Chromium to bundle/ms-playwright/. Only needs to run once; outputs are checked into bundle/.
post-install.ps1Runs after the Inno Setup installer completes. Installs Claude Code CLI and Wrangler from bundled tgz files via npm, ensuring they work offline during install.

PowerShell Tools (tools/)

ScriptDescription
deploy-demo.ps1Deploys a site folder to Cloudflare Pages. Parameters: -SiteName <slug>. Reads credentials from environment variables. Creates the Pages project if missing, runs wrangler, creates CNAME DNS record.
deploy-docs.ps1Deploys encrypted .enc files to the shared client-docs Cloudflare Pages project. Parameters: -StagingDir <path>. Copies only .enc files — never docs-index.json.
deploy-viewer.ps1Legacy viewer deployer (Canvas/Markdown). Kept for backward compatibility. New deployments use deploy-docs.ps1 and the encrypted fragment URL system.
list-site-structure.ps1Audit tool. Lists all Cloudflare Pages projects, custom domains, content file URLs, and non-Pages DNS records. Useful for inventory checks.
list-client-docs.ps1Lists all published client documents from data/encrypted-docs/docs-index.json with their full shareable fragment URLs. Safe to run — reads local files only, no API calls.
install.ps1One-time setup script. Installs prerequisites (Node.js packages, Playwright Chromium) if not already present.
build-installer.ps1Builds the distributable Windows installer by invoking PyInstaller then Inno Setup.